前段时间我注意到,许多大型网站有时会以非常少的数量(甚至是一个文件)和奇怪的字母数字名称提供他们的 CSS 和 JS 文件。我认为这些文件名是哈希,这反过来又让我怀疑:
- 他们被缓存了
- 它们是动态创建的,以减少来自各种 CSS 和 JS “位”的 HTTP 开销
一些互联网研究表明我是对的,这种方法有些存在和价值,我想在我正在开发的 WAMP/LAMP 站点中实现它 - 该站点因其模块化插件结构而经常提供很多服务中小型 CSS 和 JS 文件。
这些是我的问题:
- 如何在文件更新时自动更新缓存?我想出的解决方案是为每个页面创建一种“签名字符串”,加入文件路径和最后修改时间,然后使用 MD5 对签名进行哈希处理并将其提供给缓存以确定哈希/文件名是否为存在的。这是一个正确的方法吗?有什么缺点吗?
- 下一个合乎逻辑的步骤是缩小。缩小 CSS 文件相当简单;JS缩小也可靠吗?网上有什么好课吗?
- 另一个问题:已经缩小的脚本呢?除了某种形式的解析之外,我想到的唯一解决方案是比较缩小之前和之后的大小,如果之后的大小 < 之前的大小,则使用 PHP 缩小的形式。计算开销应该通过缓存来解决,对吧?
- 最重要的问题:CSS 图像。在这里我真的不知道:在不同的地方收集各种 CSS会破坏所有相关的图像链接。我不能使用绝对路径(破坏站点可重定位性)。
css/img
由于潜在的文件名冲突,我不希望对 CSS 图像使用标准目录结构(例如,将所有 CSS 引用的图像放在一个目录下)。这也意味着以某种方式解析 CSS。我该如何解决这个问题? - 压缩:我是否必须始终实现基于软件 PHP 的 GZIP 压缩,或者(在该领域非常无知)它可以在 Apache 服务器上自动执行吗?
感谢您的关注。