样式表未更新

问题描述 投票:39回答:12

我正在创建一个网站,但是当我对我的网站上的样式表进行更改,并且我刷新了网站时,没有任何更改。

我尝试使用视图源工具来检查stylesheet.css,它也没有更新。但是当我找到我的系统的根源时。

在我看到我的网站上的更新之前,我必须等待至少20分钟,有人能告诉我为什么我不立即看到更改?我的浏览器,计算机或服务器出了什么问题?

我也尝试删除我的cookie,缓存和历史记录,但它仍然无法正常工作。

css stylesheet browser-cache
12个回答
100
投票

如果您的网站尚未生效,并且您只是想以高兴的间隔更新样式表,请使用以下内容:

Ctrl + F5

这将强制您的浏览器重新加载并刷新与网站页面相关的所有资源。

因此,每当您更改样式表中的某些内容并想要查看新结果时,请使用此选项。

在Mac OS Chrome上使用:Command + Shift + R.


0
投票

如果它缓存在服务器上,则无法在浏览器中执行任何操作来解决此问题。您必须等待服务器重新加载该文件。您甚至无法删除该文件并重新上传。如果您使用像Cloudflare这样的缓存服务器(它甚至可以在服务器重启后继续存在),这可能需要更长的时间。您可以重命名它并加载副本。


-2
投票

不要更新style.css中的样式,而是创建自己的新样式表并在style.css中导入

your-own-style.css
      .body{
           /*any updates*/
       }

在style.css中导入your-own-style.css

@import url("your-own-style.css");

40
投票

很可能该文件只是由服务器缓存。您可以禁用缓存(但请记住在网站上线时启用它),或者修改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 FFSuperUser有一些注意事项。


8
投票

查看文件是否被缓存的最简单方法是将查询字符串附加到<link />元素,以便浏览器重新加载它。

为此,您可以将样式表引用更改为类似的内容

<link rel="stylesheet" type="text/css" href="/css/stylesheet.css?v=1" />

请注意v=1部分。每次创建新版本时都可以更新它,以查看它是否确实被缓存。


8
投票

我有同样的问题,这是由于浏览器缓存样式表。尝试刷新缓存:

    Cmd + Shift + r (on a mac) OR Ctrl + F5 (on windows)

这将进行硬刷新,并应使用您上传到服务器的新样式表。


2
投票

这可能不是OP的问题,但我遇到了同样的问题并通过刷新然后在我的cpanel上禁用Supercache来解决它。也许像我这样的其他一些新手不会知道许多托管服务提供商缓存CSS和其他一些静态文件,这些缓存的旧版CSS文件将在您编辑服务器上的文件后持续数小时存在于云中。如果您的网站在编辑后提供旧版本的CSS文件,并且您确定已清除浏览器缓存,并且您不知道您的主机是否正在缓存内容,请在尝试其他任何更多内容之前先检查一下复杂的建议。


2
投票

我有一个类似的问题,因为只是非常缓慢地更新而更令人愤怒。我无法让我的更改生效在网站上工作以挽救我的生命(尝试各种方式清除我的浏览器缓存和cookie),但如果我在当天晚些时候回到该网站或打开另一个浏览器,那里他们是。

我还通过在主机的cpanel(Siteground)上禁用Supercacher软件解决了这个问题。您还可以使用单个目录的“刷新”按钮来测试是否在禁用之前。


1
投票

![Clear Cache] Ctrl+Shift+Delete http://i.stack.imgur.com/QpqhJ.jpg有时需要进行硬刷新才能看到更新生效。但普通网络用户不太可能知道硬刷新是什么,也不可能指望他们在事情理顺之前不断刷新页面。这是一种方法:<link rel="stylesheet" href="style.css?v=1.1">


1
投票

在我的情况下,因为我无法将缓存清除时间戳附加到css url,结果发现我必须手动刷新IIS 7.5.7600中的应用程序池。

所有其他途径都被追求,直到完全禁用该网站的缓存以及本地浏览器(如两者的ENTIRELY禁用),仍然没有做到这一点。此外,“重新启动”网站也没有做任何事情。

和我一样的位置? [网站名称]>“应用程序池”>“回收”是您最后的选择......


1
投票

这可能是您的服务器配置的结果,一些托管服务提供商在您的域上启用"Varnish"。这个缓存HTTP反向代理,用于speed up delivery。可以尝试在cpanel上禁用清漆(假设你有一个)并检查它是否是那样。

© www.soinside.com 2019 - 2024. All rights reserved.