use*_*358 9 wordpress caching stylesheet browser-cache
我已经对style.css进行了更改,但wordpress网站仍然显示旧内容.我在FTP中检查了文件,文件中的更改都在那里,但它没有显示在网站上.我没有任何WP缓存插件.我还在浏览器中删除了缓存,并通过Ctrl + F5强制缓存刷新.
:(
Yam*_*amu 14
尝试更改style.css文件的版本如果通过在标题中给出路径来包含,则尝试将版本追加为
<link style ........ href="...../style.css?v=1.5"... />
Run Code Online (Sandbox Code Playgroud)
注意?v = 1.5表示版本
如果style.css是自动加载的,那么打开你的style.css文件并添加/更改版本,如下所示:
/*
Theme Name: yourthemename
Theme URI: yoururl
Author: Vantage Tel
Version: 1.5
.
.
.
*/
Run Code Online (Sandbox Code Playgroud)
//更改此版本并上传文件尝试按Ctrl + F5刷新页面一次..
如果您没有犯过明显的错误,例如忘记将更新的 CSS 文件实际上传到服务器(我实际上已经这样做了),那么这几乎肯定是一个缓存问题。
首先 - 禁用您可能拥有的任何缓存插件。当我忘记我已经安装了 WP Cache 时,这个让我得到了我。
Cloudflare可能是被遗忘的缓存的第一大来源。
如果您使用 Cloudflare,请登录并将您的站点设置为“开发模式”,以便所有请求都直接通过。
然后打开开发人员工具(假设您使用的是 chrome)并单击网络选项卡。这里有一个复选框来禁用缓存。确保勾选此项。这将确保您的浏览器在您打开开发人员工具时不会缓存文件。
接下来,单击源选项卡。左侧还有一个“网络”选项卡,其中包含用于所有网站源的文件管理器样式树控件。在此树中,导航到您的 style.css 文件,该文件通常位于:wp-content > themes > themeName。单击 style.css 文件,它应该会在右侧打开。
在这里,您可以看到,即使附加了显示更高版本的查询参数,也正在提供文件的先前版本。那就是:style.css 文件的标题/顶部说它是 1.0.1 版,但文件名类似于 style.css?ver=1.0.2。这告诉您 WordPress 知道更新的文件,但在您和服务器之间的某处显示了缓存版本。在过去,绕过缓存的一种方法是在发出请求时将查询参数附加到文件中,这将迫使任何缓存系统认为这是对未缓存的其他文件的请求。但通常这不适用于 CSS 文件。
这现在意味着缓存正在服务器上进行。大多数主机在其 Web 服务器上实现某种缓存。如何禁用此缓存取决于主机。主机的控制面板上可能有禁用缓存的功能,或者您可能必须编辑 .htaccess 文件才能执行此操作。就像是:
Header set Cache-Control "max-age=0, private, no-cache, no-store, must-revalidate"
Run Code Online (Sandbox Code Playgroud)
或者
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
Run Code Online (Sandbox Code Playgroud)
检查特定主机的站点以获得指导。
在现代 WordPress 中,该wp_enqueue_style()
函数有一个可选参数“version”。设置后,查询字符串将添加到样式表的 URL 中,例如?ver=foo
,Yamu 提到的查询字符串应向浏览器指示该文件与旧文件不同,并导致其加载新版本。
版本可以在调用某个版本控制方案(例如“1.0.1”)的函数期间手动设置,也可以使用 PHP 构建,如本例所示,它附加样式表上次修改的时间以创建类似?ver=1568061612
:的内容filemtime(get_stylesheet_directory() . '/style.css')
。完整的函数如下:
wp_enqueue_style('main_css', get_template_directory_uri() . '/style.css', array(), filemtime(get_stylesheet_directory() . '/style.css'));
Run Code Online (Sandbox Code Playgroud)
请注意,第三个参数是空的,array()
这是 的默认参数$deps
。
使用文件时间戳进行缓存清除的方法可以追溯到很长一段时间并且相当可靠。