WordPress网站仍然加载旧style.css

时间:2014-07-01 02:23:08

标签: wordpress caching stylesheet browser-cache

我对style.css进行了更改,但wordpress网站仍然显示旧内容。我在FTP中检查了文件,文件中的更改都在那里,但它没有显示在网站上。我没有任何WP缓存插件。我还在浏览器中删除了缓存,并通过Ctrl + F5强制缓存刷新。

:(

6 个答案:

答案 0 :(得分:10)

尝试更改style.css文件的版本 如果通过在标题中给出路径来包含,则尝试将版本附加为

<link style ........ href="...../style.css?v=1.5"... /> 

请注意?v = 1.5表示版本

如果自动加载style.css,则打开style.css文件并添加/更改版本,如下所示:

/*
Theme Name: yourthemename
Theme URI: yoururl
Author: Vantage Tel
Version: 1.5 
.
.
.
*/

//更改此版本并上传文件 尝试按Ctrl + F5刷新页面一次..

答案 1 :(得分:4)

为您提供一个明显的错误,比如忘记将更新的CSS文件实际上传到服务器(我实际上已经这样做了),那么这几乎肯定是一个缓存问题。

首先 - 禁用您可能拥有的任何缓存插件。当我忘记安装WP Cache时,这个让我抓狂。

如果您使用的是Cloudflare,请登录并将您的网站设置为&#34;开发模式&#34;所以所有请求都直接通过。

然后打开开发人员工具(假设您使用的是chrome)并单击网络选项卡。这里有一个禁用缓存的复选框。确保勾选此项。当您打开开发人员工具时,这将确保您的浏览器不缓存该文件。

接下来,单击“源”选项卡。在左边还有一个&#34; Network&#34;具有文件管理器样式树控件的选项卡,用于所有网站的源。在此树中,导航到style.css文件,该文件通常位于:wp-content&gt;主题&gt; 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"

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"

查看特定主持人的网站以获取指导。

答案 2 :(得分:2)

我遇到了同样的问题,我用另一种方式修复了默认设置。

首先,我找到了需要更改的文件:

wp-includes\theme.php

有一个名为 get_stylesheet_uri

的功能

我的功能如下:

function get_stylesheet_uri() {
    $time = time();
    $stylesheet_dir_uri = get_stylesheet_directory_uri();
    $stylesheet_uri = $stylesheet_dir_uri . '/style.css?v='.$time;
    /**
     * Filter the URI of the current theme stylesheet.
     *
     * @since 1.5.0
     *
     * @param string $stylesheet_uri     Stylesheet URI for the current theme/child theme.
     * @param string $stylesheet_dir_uri Stylesheet directory URI for the current theme/child theme.
     */
    return apply_filters( 'stylesheet_uri', $stylesheet_uri, $stylesheet_dir_uri );
}

答案 3 :(得分:1)

在现代WordPress中,wp_enqueue_style()函数具有an optional parameter for "version"。设置后,查询字符串会添加到样式表的网址中,例如?ver=fooas mentioned by Yamu应该向浏览器指示该文件与旧文件不同,并导致其加载新版本。

可以在调用某些版本控制方案的函数期间手动设置版本(例如“ 1.0.1”),也可以使用PHP构建版本,如本示例所示,该示例将样式表的时间last modified附加到创建类似?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'));

请注意,第三个参数是空的array(),这是$deps的默认参数。

通过使用文件goes back a long time中的时间戳来清除缓存的方法,并且相当可靠。

答案 4 :(得分:0)

在localhost中工作时,我遇到了同样的问题,在开发人员模式下禁用Chrome中的缓存后起作用(f12)>网络>检查禁用缓存

答案 5 :(得分:0)

This article有一个有趣的建议,您可以使版本等于当前时间戳:

wp_enqueue_style( 'louiscss', get_template_directory_uri() . '/mystyles.css', array(), time() );

该函数包含在functions.php中,我相信您需要将其包装在一个函数中,并在以后的{.1}}中添加到functions.php中(但我不确定);

您可能想在开发时放入add_action('init', 'your_wrapper_fn' );,然后再将其设置为静态版本。

有时 起作用的一件事是“设置>永久链接设置”,实际上只需按保存按钮即可。我知道这似乎是不可能的,但是按下该保存按钮似乎只是在更新整个配置。

在Chrome开发者工具的“网络”标签中选中“禁用缓存”是一种很好的方法,可以了解它是否由WordPress执行缓存。当您不知道它是brwoser还是WordPress时,这很难。

更新:我将保留这个答案,但是我仍然遇到麻烦。