【问题标题】:Should I combine .css files with php to reduce http requests?我应该将 .css 文件与 php 结合起来以减少 http 请求吗?
【发布时间】:2010-07-28 21:40:52
【问题描述】:

我今天在想,因为我将网页链接到 3 个外部 .css 文件: “这 HTTP 请求太多了!”我想知道我是否应该使用 php 将这些文件合并为一个?或者我应该将这三个都导入 <head> 带有 <style> 标签?我在互联网上找到了一个相关链接: Suture CSS or JavaScript Files to Reduce HTTP Requests 但我认为它没有提供足够的讨论。

注意:我也将此标记为 javascript,因为我相信它也适用于 .js 文件,因此请注意您的答案是否仅适用于 css 或 javascript

【问题讨论】:

    标签: php javascript css


    【解决方案1】:

    我认为没有必要。浏览器将只下载这两个文件一次。如果将它们添加到页面的样式标签中,则每次加载此页面时都必须下载相同的内容。

    除非您的页面/站点每秒有大量访问量,否则您将不需要它。

    我是这么想的……

    【讨论】:

    • 除非我正在制作一个流量非常大的网站(我不这样做),否则您几乎认为这种技术过于挑剔和不必要?
    • 我同意这感觉像是过早优化的情况。虽然合并(尤其是缩小)css 和 js 文件确实可以帮助处理冷页面加载,除非您对页面进行分析并发现这是一个真正的瓶颈,但可能不值得付出努力。
    • 我非常不同意@CrociDB 和@Matthew。任何基于 Web 的媒体中最关键的瓶颈是 I/O,更具体地说是 HTTP 请求。对于任何给定的 Web 应用程序,减少 HTTP 请求的总数可以证明是最有效的速度优化。即使是一个请求,也有可能减少从几百毫秒到非常长的整秒的任何时间。对于 css 文件只下载一次,然后缓存在浏览器中的论点:您的第一印象很重要!如果第一次很快,以后会更快。
    【解决方案2】:

    我想知道是否应该使用 php 将这些文件合并为一个?

    通常是的,不仅因为 HTTP 请求的数量(通常无论如何只会发生一次),还因为 Internet Explorer 无法处理 more than 31 external style sheets on the same page

    最好以缓存的方式进行,这样您就不必在每个 CSS 请求上运行 PHP。 This question 有很多关于这个问题的优秀资源的指针。

    或者我应该将这三个都导入 with 标签?

    否:它使浏览器无法缓存样式,并增加每个请求的大小

    【讨论】:

      【解决方案3】:

      我使用了多种方法的组合,这样我就可以只提供一个 css 和尽可能少的 js 文件。

      通过使用媒体查询,可以将打印和屏幕样式组合到一个页面中,并且通过使用正文类选择器,您可以在不使用 hack 的情况下内联添加 ie 样式。

      例如在main.css中

      @media screen {
          p { [styles] }
          ...
      }
      @media print {
          p { [styles] }
          ...
      }
      

      本文简要介绍了正文类选择器:
      http://misteroneill.com/improved-internet-explorer-targeting-through-body-classes/

      【讨论】:

      • 非常有用,但不幸的是与我当前的项目无关。我会保留这个;-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多