【发布时间】:2012-07-24 19:57:20
【问题描述】:
前段时间我注意到,许多大型网站有时会以非常少的数量(甚至是一个文件)提供他们的 CSS 和 JS 文件,并且使用奇怪的字母数字名称。我认为这些文件名是哈希,这反过来又让我怀疑:
- 它们已被缓存
- 动态创建它们是为了减少来自各种 CSS 和 JS“位”的 HTTP 开销
一些互联网研究表明我是对的,这种方法有些存在和价值,我想在我正在开发的 WAMP/LAMP 网站中实现它 - 该网站因其模块化插件结构而提供服务通常有很多中小型的 CSS 和 JS 文件。
这些是我的问题:
- 如何在文件更新时自动更新缓存?我想出的解决方案是为每个页面创建一种“签名字符串”,加入文件路径和最后修改时间,然后使用 MD5 对签名进行哈希处理并将其提供给缓存以确定哈希/文件名是否为存在的。这是一个正确的方法吗?有什么缺点吗?
- 下一个合乎逻辑的步骤是缩小。缩小 CSS 文件相当简单; JS缩小也可靠吗?网上有什么好的课程吗?
- 另一个问题:已经缩小的脚本呢?除了某种形式的解析之外,我想到的唯一解决方案是比较缩小之前和之后的大小,如果之后的大小
-
最重要的问题:CSS 图像。在这里我真的没有头绪:在不同的地方收集各种 CSS会破坏所有相关的图像链接。我不能使用绝对路径(破坏站点可重定位性)。由于潜在的文件名冲突,我不希望对 CSS 图像使用标准目录结构(例如,将所有 CSS 引用的图像放在
css/img目录下)。这也意味着以某种方式解析 CSS。我该如何解决这个问题? - 压缩:我是否必须始终实现基于软件 PHP 的 GZIP 压缩,或者(在该领域非常无知)可以在 Apache 服务器上自动执行吗?
感谢您的关注。
【问题讨论】:
-
请一题一题,先搜索。其中很多都是重复的。
-
@Quentin:你认为我最好把问题分开吗?我认为这个论点(使用 PHP 缓存和压缩的 CSS/JS 服务)是独一无二的,而且我已经看到其他问题(通常非常赞成)与我的许多观点一样。任何意见都表示赞赏:)
-
on 5.) id 建议将它们放在一个文件夹中,这样更容易找到,如果您遇到文件名冲突问题,请将它们放在 img 文件夹中的文件夹中
-
@ianace 我假设你是第 4 点的答案:实际上,我从 Dmytro Kadyrov 的回答中找到了一个非常有用的课程:[code.google.com/p/minify/source/browse/min/lib/Minify/CSS/…
-
@Cranio 请更新您的网址,在它的末尾有一个额外的
]:D,顺便说一句很酷的链接
标签: php javascript css apache compression