我正在创建一个网站,但是当我对我的网站上的样式表进行更改,并且我刷新了网站时,没有任何更改。
我尝试使用视图源工具来检查stylesheet.css
,它也没有更新。但是当我找到我的系统的根源时。
在我看到我的网站上的更新之前,我必须等待至少20分钟,有人能告诉我为什么我不立即看到更改?我的浏览器,计算机或服务器出了什么问题?
我也尝试删除我的cookie,缓存和历史记录,但它仍然无法正常工作。
如果您的网站尚未生效,并且您只是想以高兴的间隔更新样式表,请使用以下内容:
Ctrl + F5
这将强制您的浏览器重新加载并刷新与网站页面相关的所有资源。
因此,每当您更改样式表中的某些内容并想要查看新结果时,请使用此选项。
在Mac OS Chrome上使用:Command + Shift + R.
如果它缓存在服务器上,则无法在浏览器中执行任何操作来解决此问题。您必须等待服务器重新加载该文件。您甚至无法删除该文件并重新上传。如果您使用像Cloudflare这样的缓存服务器(它甚至可以在服务器重启后继续存在),这可能需要更长的时间。您可以重命名它并加载副本。
不要更新style.css中的样式,而是创建自己的新样式表并在style.css中导入
your-own-style.css
.body{
/*any updates*/
}
在style.css中导入your-own-style.css
@import url("your-own-style.css");
很可能该文件只是由服务器缓存。您可以禁用缓存(但请记住在网站上线时启用它),或者修改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有一些注意事项。
查看文件是否被缓存的最简单方法是将查询字符串附加到<link />
元素,以便浏览器重新加载它。
为此,您可以将样式表引用更改为类似的内容
<link rel="stylesheet" type="text/css" href="/css/stylesheet.css?v=1" />
请注意v=1
部分。每次创建新版本时都可以更新它,以查看它是否确实被缓存。
我有同样的问题,这是由于浏览器缓存样式表。尝试刷新缓存:
Cmd + Shift + r (on a mac) OR Ctrl + F5 (on windows)
这将进行硬刷新,并应使用您上传到服务器的新样式表。
这可能不是OP的问题,但我遇到了同样的问题并通过刷新然后在我的cpanel上禁用Supercache来解决它。也许像我这样的其他一些新手不会知道许多托管服务提供商缓存CSS和其他一些静态文件,这些缓存的旧版CSS文件将在您编辑服务器上的文件后持续数小时存在于云中。如果您的网站在编辑后提供旧版本的CSS文件,并且您确定已清除浏览器缓存,并且您不知道您的主机是否正在缓存内容,请在尝试其他任何更多内容之前先检查一下复杂的建议。
我有一个类似的问题,因为只是非常缓慢地更新而更令人愤怒。我无法让我的更改生效在网站上工作以挽救我的生命(尝试各种方式清除我的浏览器缓存和cookie),但如果我在当天晚些时候回到该网站或打开另一个浏览器,那里他们是。
我还通过在主机的cpanel(Siteground)上禁用Supercacher软件解决了这个问题。您还可以使用单个目录的“刷新”按钮来测试是否在禁用之前。
![Clear Cache] Ctrl+Shift+Delete
http://i.stack.imgur.com/QpqhJ.jpg有时需要进行硬刷新才能看到更新生效。但普通网络用户不太可能知道硬刷新是什么,也不可能指望他们在事情理顺之前不断刷新页面。这是一种方法:<link rel="stylesheet" href="style.css?v=1.1">
在我的情况下,因为我无法将缓存清除时间戳附加到css url,结果发现我必须手动刷新IIS 7.5.7600中的应用程序池。
所有其他途径都被追求,直到完全禁用该网站的缓存以及本地浏览器(如两者的ENTIRELY禁用),仍然没有做到这一点。此外,“重新启动”网站也没有做任何事情。
和我一样的位置? [网站名称]>“应用程序池”>“回收”是您最后的选择......
这可能是您的服务器配置的结果,一些托管服务提供商在您的域上启用"Varnish"。这个缓存HTTP反向代理,用于speed up delivery。可以尝试在cpanel上禁用清漆(假设你有一个)并检查它是否是那样。