我正在使用 Magento,有一个功能可以将 CSS 和 Javascript 合并到一个大文件中。
不管其优点和缺点,都存在以下问题:
最终文件会在多个级别进行缓存,包括但不限于:
Magento 使用连接的 css 文件名的 MD5 和来为合并的 css 文件生成新的文件名。这样每个具有不同 css 文件集的页面都会获得正确的合并 css 文件。
为了解决缓存问题,我还将文件修改时间戳包含到该哈希中,以便每次修改 css 文件时都会生成一个新的哈希。
因此,非重新验证缓存分数的全部优点,但如果某些内容发生更改,它会立即可见,因为资源链接已更改。
到目前为止,一切都很好:
唯一的问题是,用于生成 has 的文件名只是通常在 HTML-Head 块中直接引用的文件名,并且don't包括css 导入到这些文件中.
因此,在 css 文件中导入的文件的更改不会产生新的哈希值。
不,我真的不想递归地解析所有导入并扫描它们或类似的东西。
我宁愿考虑基于目录的解决方案。有什么可以在文件系统的基础上有效地监视“目录内的最后更改”吗?
我们使用的是ext4。
或者也许还有另一种方法,也许使用 find 命令,可以根据 inode 索引完成所有工作?
类似的事情?
我见过很多程序可以立即“看到”更改,而无需扫描整个文件系统。我相信 Linux 下也有一些“文件操作监视”守护进程可用。
问题是 css 目录非常大。
有人能指出我正确的方向吗?
我建议您在修改依赖的 php 文件之一时,使用独立于 php 的守护进程来修改主 css 文件的更改日期。您可以使用 dnotify 来实现它,例如:
dnotify -a -r -b -s /path/to/imported/css/files/ -e touch /path/to/main/css/file;
每次修改其他文件夹中的文件之一时,它将在主 css 文件上执行“touch”(-a -r -b -s = 任何访问/递归目录查找/在后台运行/无输出)。或者您可以执行任何其他操作并从 PHP 进行测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)