在单个文件中提供CSS和JS,可能的优点和缺点

时间:2012-07-26 08:57:43

标签: php javascript css apache compression

前段时间我注意到,许多大型网站有时会以极少数(甚至一个文件)和奇怪的字母数字名称提供CSS和JS文件。我认为这些文件名是哈希值,这反过来又让我怀疑:

  • 他们被缓存
  • 动态创建它们是为了减少来自各种CSS和JS“位”的HTTP开销量

一些互联网研究表明我是对的,这种方法有点存在和重视,我想在我正在开发的WAMP / LAMP网站中实现它 - 这个网站由于其模块化插件结构而提供服务经常有很多中小型CSS和JS文件。

<小时/> 这些是我的问题:

  1. 如何在文件更新时自动更新缓存?我想出的解决方案是为每个页面创建一种“签名字符串”,加入文件路径和最后修改时间,然后使用MD5散列签名并将其提供给缓存以确定散列/文件名是否为存在。这是一种正确的方法吗?任何缺点?
  2. 下一个合乎逻辑的步骤是缩小。缩小CSS文件非常简单; JS minification也可靠吗?互联网上有什么好的课程吗?
  3. 另一个问题:已经缩小的脚本怎么样?除了我想到的某种形式的解析之外,唯一的解决方案是比较缩小之前和之后的大小,如果大小在&lt;之后。之前的大小使用PHP缩小的形式。计算开销应该通过缓存解决,对吗?
  4. 最重要的问题 CSS图片。在这里,我真的没有线索:在不同的地方收集各种CSS 打破所有相对图像链接。我不能使用绝对路径(中断站点可重定位性)。我宁愿不使用CSS图像的标准目录结构(f.ex。将所有CSS引用的图像放在css/img目录下),因为潜在的文件名冲突。这也意味着以某种方式解析CSS。我该如何解决这个问题?
  5. 压缩:我是否必须始终实施基于PHP的软件GZIP压缩,或者(在该领域非常无知)是否可以在Apache服务器上自动实施?
  6. 感谢您的关注。

1 个答案:

答案 0 :(得分:1)

我使用的是一个非常好的库https://github.com/mrclay/minify。它的库自动将css和js文件缩小为一个文件,并在修改文件上重建缓存。