Wordpress - 创建插件时禁用管理面板的缓存

Posted

技术标签:

【中文标题】Wordpress - 创建插件时禁用管理面板的缓存【英文标题】:Wordpress - disable cache for admin panel while creating plugin 【发布时间】:2020-12-29 20:42:41 【问题描述】:

我是第一次创建插件并面临缓存方面的主要问题。

我将我的 js 文件注册为

wp_register_script("custom-js-backend", PLUGIN_URL . 'assets/js/custom.js', array(
                'jquery',
                'jquery-blockui'
));
wp_enqueue_script("custom-js-backend");

但无法在管理面板上反映更改。

试过

function cache_cleanup()

    remove_action('wp_head', 'wp_generator');
    remove_action('wp_footer', 'wp_generator');

add_action('init', 'cache_cleanup');  

也在 wp-config.php 中定义

define('WP_CACHE',false);

但没有运气。

由于默认情况下我的 js 文件带有 5.1.0 版本,因此尝试使用从中删除该版本 https://wordpress.org/plugins/disable-version-caching/

现在版本正在被删除,但文件仍然没有更新。

一种解决方案是在我的 js 文件中添加版本号,并在每次小的更改后更改版本,但这完全不对。

任何帮助如何在创建插件时禁用管理面板的缓存。

【问题讨论】:

您可以在浏览器上使用隐身模式,应该可以解决问题。 【参考方案1】:

您可以使用filemtime(PLUGIN_URL . 'assets/js/custom.js') 作为版本号 - 这将使版本号,最后一次保存文件的 unix 时间 -

意思是每次你相同的文件,你会自动得到一个比上一个更高的新版本号,这样它仍然是可缓存的,但是当有变化时会被清除

它看起来像

wp_register_script("custom-js-backend", PLUGIN_URL . 'assets/js/custom.js', array(
            'jquery',
            'jquery-blockui'
), filemtime(PLUGIN_URL . 'assets/js/custom.js'), true);

【讨论】:

【参考方案2】:

在开发过程中将此添加到.htaccess 到disable browser caching:

# Disable browser caching.
# Ensure mod_headers is installed.
# To install on Debian, run `a2enmod headers`, then restart the server.
FileETag None
Header unset ETag
Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0"
Header set Pragma "no-cache"
Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"

注意:您的浏览器可能仍会缓存来自 CDN 的外部内容,但不会缓存您服务器上的任何内容。

【讨论】:

我也可以在生产版本上使用它吗? @JassPreet,缓存很好 - 网站加载速度更快。将其留在生产中。 我做了一些改进,并链接到另一个 SO 页面,其中包含有关缓存的更多信息。 好的,谢谢,我会实施它并让您知道它是否有帮助。导致版本缓存在当今的 wordpress 中非常令人头疼:(

以上是关于Wordpress - 创建插件时禁用管理面板的缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何检查当前页面是不是是wordpress中的插件管理面板

WordPress 管理面板缺少样式和脚本

极慢的 Wordpress WooCommerce 网站(在管理面板和最终用户中)

Wordpress-如何禁用插件更新

Wordpress小工具控制面板

Wordpress-如何禁用插件更新