如何在Linux上高效监控目录变化?

2023-11-27

我正在使用 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(使用前将#替换为@)

如何在Linux上高效监控目录变化? 的相关文章

  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • 在 Drupal 中选择性地删除页面的样式表

    我正在尝试为首页制作不同的布局 在此过程中 我声明了名为 front page css 和 page front tpl php 的新样式表 我正在使用加载responsive sidebar css 的 Zen 子主题 我想删除 resp
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • 在 PHP 中拆分 XML

    我有一个带有根元素和多个项目子元素的合并 xml 像这样的东西
  • $_REQUEST、$_GET、$_POST 哪一个最快?

    这些代码中哪一个会更快 temp REQUEST s or if isset GET s temp GET s else temp POST s REQUEST http php net manual en reserved variabl
  • 如何使用 RewriteRule 来为 PHP 修改 $_SERVER['REQUEST_URI'] ?

    有了这个 htaccess RewriteEngine On RewriteRule foo foo 1 here I tried L PT C etc RewriteRule index php L 我已经尝试了第一个 RewriteRu
  • 在 php 和 mysql 中使用 utf8mb4

    我读过 mysql gt 5 5 3 完全支持每个可能的字符 如果您使用编码utf8mb4对于某个表 列http mathiasbynens be notes mysql utf8mb4 http mathiasbynens be note
  • php exec 返回的结果比直接进入命令行要少

    我有一个 exec 命令 它的行为与通过 Penguinet 给 linux 的相同命令不同 res exec cd mnt mydirectory zcat log file gz echo res 当将命令直接放入命令行时 我在日志文件
  • “以管理员身份运行”时的 Windows 批处理文件起始目录

    我有一个位于目录中的批处理文件 也必须从那里运行 因为它会更新该目录中的文件 这工作得很好 除非用户以管理员身份运行批处理文件 Vista 上需要 那么起始目录是C Windows System32 有什么办法仍然能够知道批处理文件是从哪个
  • filter_input() 何时删除 POST 变量的斜杠?

    我创建了一个小型 PHP 脚本 它在 PHP 5 2 17 的服务器上运行magic quotes gpc指令已启用 我没有对 php ini 文件的写访问权限 并且我想从用户输入中删除所有斜杠 即使magic quotes gpc指令被关
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 使用 DateTime 类计算日期差异时出错

    我正在尝试使用 DateTime 类 php gt 5 3 来计算 2 个日期的差异 手册中的示例简单明了 我尝试了该示例并且效果很好 但如果改变开始和结束日期 就会出现问题 this gt start date 2011 03 01 th
  • Opencart 的 $this->config->get('module_var_name')

    我正在尝试自定义 Opencart 支付模块 我看到很多地方都使用了配置信息 但我找不到任何创建正在使用的变量的内容 我知道在管理页面中 如果我选择 paypal 标准 我可以设置所有 配置 信息 但我找不到强调它的 模型 是否有模型 我希
  • 使用php插入sql数据库时出错

    我有一个带有 MySQL 插入查询的程序 sql INSERT INTO people person id name username password email salt VALUES person id name username p
  • Laravel 类邮件程序不存在

    我将应用程序从 5 更新到 5 2 现在 当我调用 Mail send 时 它会返回一个异常 Class mailer 不存在 Mail send emails mail data gt content function m use to
  • PHP 负面因素不断增加

    我这里有这个代码 remaining 0 foreach clientArrayInvoice as key gt row remaining remaining row total 它的作用是 它获取总计值并将它们相加 但是当我有负值时
  • 在两次之间每分钟执行一次 Cronjob

    我需要在 crontab 中每分钟运行一个 bash 脚本8 45am and 9 50am每天的 Code 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 8 home pull sh gt ho
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 您可以使用 MySQL 查询来完整创建数据库的副本吗

    我有一个包含 5 个表的 MySQL 数据库的实时版本和一个测试版本 我不断使用 phpMyAdmin 将实时版本中的每个表复制到测试版本 有谁有mysql查询语句来制作数据库的完整副本吗 查询字符串需要考虑结构 数据 自动增量值以及与需要
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应

随机推荐

  • 64位和32位进程互通 boost::message_queue

    各位 美好的一天 我目前正在尝试找到一种在 64 位进程和 32 位进程之间传递数据的方法 由于它是一个实时应用程序并且两者都在同一台计算机上运行 因此我很难使用共享内存 shm 当我在寻找一些使用 shm 的同步机制时 我对 boost
  • Android:使用UIL和TouchImageView不显示ImageView

    我正在尝试从以下位置实现加载图像URL with Universal Image Loader and zoom with TouchImageView Mike Ortiz 但当尝试查看图像时 黑屏被展示 我已经检查过 URL 是否正确
  • Seaborn ImportError:DLL 加载失败:找不到指定的模块

    我收到 ImportError DLL 加载失败 找不到指定的模块 导入模块时seaborn 我尝试卸载seaborn和matplotlib 然后使用重新安装 pip install seaborn 但没有运气 我仍然遇到同样的错误 Imp
  • ora-06553 pls-306 调用“ogc_x”时参数数量或类型错误

    我正在尝试在 oracle 10g 中进行查询 事情是这样的 SELECT FROM h2h reg reg h2h cat estatus est WHERE reg FECH APLICACION SYSDATE AND REG ID
  • 使用 Hibernate Validator (JSR 303) 进行跨领域验证

    Hibernate Validator 4 x 中是否有跨字段验证的实现 或第三方实现 如果不是 那么实现跨字段验证器的最简洁方法是什么 例如 如何使用 API 来验证两个 bean 属性是否相等 例如验证密码字段与密码验证字段是否匹配 在
  • Jquery UI 可拖动不会调整其他 DIV 的大小

    在这嘭嘭嘭我有三个DIVs 除以另外两个DIV可拖动的 灰色 当可拖动时DIVs 向上 向下或向左 向右拖动 其他DIVs 应该调整大小 第一个可拖动 DIV 工作正常 左侧的 DIV 可以垂直调整其他 DIV 的大小 但第二个可拖动DIV
  • 如何在 SQL Server 非标准架构表上使用 dplyr tbl

    我的问题是我该如何使用dplyr函数 例如tbl 在不使用默认 dbo 架构的 SQL Server 表上 为了获得更多上下文 我尝试将此处给出的 R 数据库示例应用到我自己的表中 https db rstudio com 向下滚动到标题为
  • git Remote prune、git prune、git fetch --prune 等有什么区别

    我的情况是这样的 在同一个存储库上工作的人已经从他的本地和远程存储库中删除了一个分支 大多数在 Stack Overflow 或其他网站上询问此类问题的人都会遇到分支问题仍然显示在远程跟踪分支列表中的问题git branch a在底部 ma
  • 按 IN 序列对 MySQL 结果排序?

    当我使用 IN 从表中选择一组行时 例如 SELECT x y x z FROM x WHERE x id IN 23 55 44 12 有没有 SQL 技巧可以让它们按照 IN 集中给定的顺序返回 因此 在示例中 假设 x 具有 id 为
  • 垂直居中响应式 iframe

    我正在使用该技术此处描述使 iframe 视频 响应 本质上 iframe 绝对定位在宽度为 100 的包装元素内 包装元素根据视频的宽高比设置填充 embed responsive position relative video heig
  • $ 在 Haskell 中意味着什么/做什么?

    当您编写稍微复杂的函数时 我注意到 用得很多 但我不知道它的作用是什么 是中缀 应用程序 它定义为 a gt b gt a gt b f x f x or f x f x or id 它对于避免额外的括号很有用 f g x f g x 它的
  • 检查字符串是否是字符串列表中的子字符串的最快方法

    我有一个包含 4000 个不同名字的静态列表 因此列表的长度很大 4000 但每个字符串大约有 4 到 12 个字符 它们是名字 然后 我有一个从数据库检索到的 10000 个字符串的动态列表 这些字符串可能具有任意长度 我需要针对 100
  • 为什么 Window.FindName() 没有发现子 UserControl 中按钮的 x:Name?又名名称范围如何工作?

    因此 在下面的示例代码中 我创建了一个 UserControl UserControldChild 它是主窗口 Window1 xaml 的子窗口 为什么FindName 方法在下面的代码中找不到 myButton 这一定与WPF XAML
  • 在 Rails 应用程序中记录 RestClient

    我想调试我的 Rails 应用程序发出的请求休息客户端 RestClient 文档说 要启用日志记录 您可以 使用 ruby Logger 设置 RestClient log 或者设置一个环境变量以避免修改代码 在这种情况下 您可以使用文件
  • UUID 有多独特?

    使用 UUID 唯一标识某些内容 我将其用于上传到服务器的文件 有多安全 据我了解 它是基于随机数的 然而 在我看来 只要有足够的时间 它最终会重演 纯粹是偶然 是否有更好的系统或某种类型的模式来缓解这个问题 非常安全 the annual
  • Java(Android)中自动检测文本的语言[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 对于我的应用程序 我希望给定一个文本 检测其语言 例如 ISO 代码和机会 我想知道是否有某种网络服务或java库可以这样做 提前致谢 使用二元分析
  • movl $_start, %eax 是什么意思?

    后面跟一个标识符是什么意思 x86 汇编 AT T 语法 在 AT T 语法中 意味着将后面的内容视为立即常量而不是内存地址 换句话说 movl start eax 加载符号的地址 start进入 eax movl start eax 从内
  • 如何为 python 获取 PIP [重复]

    这个问题在这里已经有答案了 我正在尝试安装 pip py 每当我搜索安装程序时 它都会打开一个新选项卡 其中包含代码 但我无法下载任何内容 我打算做什么 我打算将代码复制粘贴到Python解释器中吗 如何让它适用于 Windows 7 32
  • 在 Python 2.7 中从数字列表中删除一组索引的最有效方法是什么?

    所以我想知道如何使用 Python 2 7 最有效地获取用于表示索引的值列表 如下所示 但长度最多为 250 000 indices 2 4 5 并从更大的列表中删除该索引列表 如下所示 3 000 000 项 numbers 2 6 12
  • 如何在Linux上高效监控目录变化?

    我正在使用 Magento 有一个功能可以将 CSS 和 Javascript 合并到一个大文件中 不管其优点和缺点 都存在以下问题 最终文件会在多个级别进行缓存 包括但不限于 亚马逊云前 代理服务器 客户端浏览器缓存 Magento 使用