我正在创建一个网站,但是当我对我网站上的样式表进行更改并刷新网站时,没有任何更改。
我尝试使用视图源工具检查stylesheet.css
,但它也没有更新。但是,当我到我的系统的根部时,它就是。
在我看到我网站上的更新之前,我必须等待至少20分钟,有人能告诉我为什么我不立即看到更改吗?我的浏览器,计算机或服务器出了什么问题?
我也尝试删除我的Cookie,缓存和历史记录,但它仍无效。
答案 0 :(得分:98)
如果您的网站尚未投放,并且您只是想以高兴的时间间隔更新样式表,请使用此功能:
Ctrl + F5
这将强制您的浏览器重新加载并刷新与网站页面相关的所有资源。
因此,每当您更改样式表中的某些内容并想要查看新结果时,请使用此选项。
在Mac OS Chrome上使用:Command + Shift + R.
答案 1 :(得分:39)
很可能该文件只是由服务器缓存。您可以禁用缓存(但请记住在网站上线时启用缓存),或者修改href
标记的link
,这样服务器就不会从缓存加载缓存。
如果您的页面是由某些语言(如php)动态创建的,则可以在href
值的末尾添加一些变量,例如:
<link rel="stylesheet" type="text/css" href="css/yourStyles.css?<?php echo time(); ?>" />
这将在文件路径的末尾添加当前时间戳,因此它将始终是唯一的,并且永远不会从缓存中加载。
如果您的页面是静态的,则必须自己管理这些变量,因此请使用以下内容:
<link rel="stylesheet" type="text/css" href="css/yourStyles.css?version=1" />
在对文件内容进行一些更改后,将version=1
更改为version=2
,依此类推。
如果您希望从缓存css文件中禁用缓存,请参阅您的服务器类型文档(在apache,IIS,nginx等上做了不同的操作)或在https://serverfault.com/上询问/搜索问题
假设IIS - 在根目录或相关文件夹中使用正确的设置添加密钥就可以了。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<caching enabled="false" enableKernelCache="false" /> <!-- This one -->
</system.webServer>
</configuration>
那说有时候仍然需要回收应用程序池以“碰撞”CSS。因此:单独禁用IIS缓存不是100%保证的解决方案。
对于浏览器:感兴趣的fine-grain controlling the local cache on FF上SuperUser上有一些注释。
答案 2 :(得分:8)
查看文件是否被缓存的最简单方法是将查询字符串附加到<link />
元素,以便浏览器重新加载它。
要执行此操作,您可以将样式表引用更改为
<link rel="stylesheet" type="text/css" href="/css/stylesheet.css?v=1" />
请注意v=1
部分。每次创建新版本时都可以更新它,以查看它是否确实被缓存。
答案 3 :(得分:6)
我遇到了同样的问题,这是由于浏览器缓存了样式表。尝试刷新缓存:
Cmd + Shift + r (on a mac) OR Ctrl + F5 (on windows)
这将进行硬刷新,并应使用您上传到服务器的新样式表。
答案 4 :(得分:2)
这可能不是OP的问题,但我遇到了同样的问题并通过刷新然后在我的cpanel上禁用Supercache来解决它。也许像我这样的其他新手不知道许多托管服务提供商缓存CSS和其他一些静态文件,这些缓存旧版本的CSS文件将在您编辑服务器上的文件后持续存在数小时。如果您的网站在编辑后提供旧版本的CSS文件,并且您确定已清除浏览器缓存,并且您不知道您的主机是否正在缓存内容,请先检查在你尝试任何其他更复杂的建议之前。
答案 5 :(得分:2)
我有一个类似的问题,因为只是非常缓慢地更新而更令人愤怒。我无法让我的更改在网站上工作以保存我的生活(尝试各种方式清除我的浏览器缓存和cookie),但如果我在当天晚些时候回到该网站或打开另一个浏览器他们在那里。
我还通过在主机的cpanel(Siteground)上禁用Supercacher软件解决了这个问题。您也可以使用&#34; flush&#34;单个目录的按钮,用于在禁用之前测试它是否为。
答案 6 :(得分:1)
![清除缓存] Ctrl+Shift+Delete
http://i.stack.imgur.com/QpqhJ.jpg
有时需要进行硬刷新才能看到更新生效。但普通网络用户不太可能知道硬刷新是什么,也不可能指望他们在事情理顺之前不断刷新页面。
这是一种方法:<link rel="stylesheet" href="style.css?v=1.1">
答案 7 :(得分:1)
这可能是您的服务器配置的结果,某些托管服务提供商在您的域上启用了"Varnish"。此缓存HTTP反向代理用于speed up delivery。可以尝试在cpanel上禁用清漆(假设你有一个)并检查它是否是那样。
答案 8 :(得分:1)
在我的情况下,由于我无法将缓存清除时间戳附加到css url,结果发现我必须手动刷新IIS 7.5.7600中的应用程序池。
所有其他途径都被追求,直到完全禁用该网站的缓存以及本地浏览器(如两者都禁用了ENTIRELY),仍然没有做到这一点。此外,“重新启动”网站也没有做任何事情。
和我一样的位置? [网站名称]&gt; “应用程序池”&gt; “回收”是您最后的选择......
答案 9 :(得分:0)
如果它已缓存在服务器上,则无法在浏览器中进行任何修复。您必须等待服务器重新加载文件。您甚至无法删除文件并重新上传。如果您正在使用像Cloudflare这样的缓存服务器,这可能会花费更长的时间(甚至在服务器重新启动后仍然有效)。您可以重命名并加载副本。
答案 10 :(得分:0)
我有同样的问题。原因之一是,我的应用程序已缓存并且正在执行本地构建。
如果上述注释均无效,我希望删除css文件,然后再次进行更改后重新添加。
答案 11 :(得分:0)
我也遇到了这个问题,很多人似乎建议强制重新加载页面,这在某些情况下(例如在服务器上运行它)无法解决问题。 我相信这种情况下的最佳解决方案是 为您的CSS加上时间戳。
<link rel="stylesheet" type="text/css" href="style.css?Wednesday 2nd February 2020 12PM" />
在CSS文件末尾添加?{%now'U'%} 的位置将解决此问题。
?Wednesday 2nd February 2020 12PM
在{{1}}(当前日期)似乎可以解决此问题的地方,我还注意到,也只花时间解决了该问题。
答案 12 :(得分:0)
首先,尝试强制重载或清除缓存和清空追逐和硬重载。您可以按 F12 然后右键单击它。
第二种解决方案:检查您的 HTML 基本标签。您可以从 here 了解更多信息。
答案 13 :(得分:-1)
以下是我一次发生的事情:
我的style.css没有更新,因为我正在编辑另一个文件! (同名,但它是另一个目录中真实文件的副本)。
因此,您可以检查是否正在编辑并加载真正的style.css文件。
答案 14 :(得分:-1)
清除缓存是关键;),因为您访问了实时页面,所以它将加载旧数据。
答案 15 :(得分:-2)
不要更新style.css中的样式,而是创建自己的新样式表并在style.css中导入
your-own-style.css
.body{
/*any updates*/
}
在style.css中导入你自己的style.css
@import url("your-own-style.css");