mage2tv/magento-cache-clean

比 bin/magento cache:clean 更快的替代方案,带有文件监视器

资助包维护!
vinai

安装次数: 1,530,733

依赖项: 4

建议者: 0

安全: 0

星标: 527

监视者: 29

分支: 61

开放性问题: 13

语言:Clojure


README

"你知道,希望是一个错误。如果你不能修复破损的东西,你将,嗯...你会发疯。" - 马克斯·洛克坦斯基

Magento 2 缓存清理

使用文件监视器的 bin/magento cache:clean 的更快替代方案。

文件监视器会自动清理 Magento 2 缓存中受影响的缓存类型。例如,如果你修改了一个模板,它只会清理 block_htmlfull_page 缓存,而不是 configlayout 缓存。

该项目仅在 MacOS 和 Linux 上进行了测试。请通过在 GitHub 问题跟踪器 上打开问题来报告错误。

特性

  • 支持文件、Redis 和 Varnish 缓存后端
  • 当源文件更改时,删除受影响的生成代码类
  • 零配置,所有必要信息都从 app/etc/env.php 读取
  • 当监视器运行时,可以通过热键快速刷新缓存

安装和更新

安装

composer require --dev mage2tv/magento-cache-clean

更新

composer update --dev mage2tv/magento-cache-clean

通常使用 composer global require ... 全局安装此工具。

用法

在你的 Magento 目录中,运行 vendor/bin/cache-clean.js --watch

Ctrl-C 退出监视器进程。

脚本也可以作为 bin/magento cache:clean 的更快替代方案。例如

vendor/bin/cache-clean.js config full_page

(它更快,因为 bin/magento 的启动时间非常慢。)

有几个选项可以自定义行为

vendor/bin/cache-clean.js --help
Sponsored by https://www.mage2.tv

Usage: cache-clean.js [options and flags] [cache-types...]
Clean the given cache types. If none are given, clean all cache types.

--directory|-d <dir>    Magento base directory
--watch|-w              Watch for file changes
--verbose|-v            Display more information
--no-flood-guard|-n     Disable the 5s debounce per cache type
--debug|-vv             Display too much information
--silent|-s             Display less information
--version               Display the version
--help|-h               This help message

通常我在开始开发时使用 --watch 选项运行一次命令,当发生无法自动检测到的更改时,我使用 vendor/bin/cache-clean.js 作为 bin/magento cache:clean 的替代方案。

热键

当监视器运行时,可以通过单个按键来清理缓存的一部分

还有热键可以清理 Adminhtml 或前端区域的静态资源,或者清理集成测试沙箱或生成代码目录。

先决条件

  • node.js (基于 10 版本,但也应适用于较旧的 8.x 版本)。
  • 打开所有 Magento 缓存(使用 bin/magento cache:enable)可能是好主意,以获得最大好处。

已知问题

  • 目前,在添加新主题后必须重新启动监视器,因此将其添加到监视列表中。

  • NFS 挂载点上的文件更改(例如在 vagrant 中)不会触发监视。根据特定的设置,可能在主机系统上运行监视器。

  • 如果在 PHPStorm 中运行任务并且热键不起作用,请按 STRG+SHIFT+A 搜索操作,然后搜索 "registry...",然后启用 nodejs.console.use.terminal 并重新启动监视器进程。

  • 在 Windows 上测试得不多,如果您想贡献,请打开一个问题。

  • 如果在 Linux 上遇到 Error NOSPCENOSPC: System limit for number of file watchers reached 错误,请运行以下命令

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
  • 在 Magento 2.1.0 - 2.3.3 版本中存在一个错误,导致完整的页面缓存记录被写入到 var/cache 目录而不是 var/page_cache 目录。这个问题导致缓存清理行为变得不稳定。有一个简单的解决方案,即从默认的 app/etc/env.php 文件中删除所有缓存配置。该错误仅影响默认配置的文件系统缓存后端。Redis 或 Varnish 不受影响。该错误将在即将发布的 (目前为 Magento 2.3.4) 版本中修复。

更多信息

感谢

这个脚本受到Timon de Groot博客文章 的启发,他在文章中描述了在 PHPStorm 中使用文件监视器调用 redis-cli 来清除完整的缓存,每当修改 XML 文件时。这个解决方案的唯一缺点是它总是清除完整的缓存,并且只适用于 Redis。

还要感谢所有提供反馈、分享想法和帮助测试新功能的每个人!没有你们,这个工具是无法实现的!

版权 & 许可

版权所有 2019 - 2023 由 Vinai Kopp,根据 BSD-3-Clause 许可证分发(见 LICENSE 文件)。