gpt4 book ai didi

php - 如何有效地监视 linux 上目录的更改?

转载 作者:IT王子 更新时间:2023-10-29 00:25:33 24 4
gpt4 key购买 nike

我正在使用 Magento,有一个功能可以将 CSS 和 Javascript 合并到一个大文件中。

无论其利弊如何,都存在以下问题:

最终文件在多个级别缓存,包括但不限于:

  • 亚马逊 CloudFront
  • 代理服务器
  • 客户端浏览器缓存

Magento 使用串联的 css 文件名的 MD5 和来为合并的 css 文件生成新的文件名。这样每个具有一组不同的 css 文件的页面都会得到一个正确的合并 css 文件。

为了解决缓存问题,我还将文件修改时间戳包含在该散列中,以便在每次修改 css 文件时生成一个新的散列。

因此,非重新验证缓存分数的全部优势,但如果发生更改,它会立即可见,因为资源链接已更改。

到目前为止还不错:

唯一的问题是,用于生成 has 的文件名只是通常在 HTML-Head block 中直接引用的文件名,不要 在这些文件中包含 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 对其进行测试。

关于php - 如何有效地监视 linux 上目录的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com