我正在修改网站的外观(CSS修改),但由于烦人的持久缓存,无法在Chrome上看到结果。我尝试了Shift+刷新,但不起作用。

如何临时禁用缓存或以某种方式刷新页面以查看更改?


当前回答

嘿,如果您的网站使用的是PHP,那么请在html页面的开头放置以下PHP代码片段:

   //dev versioning - stop caching
   $rand = rand(1, 99999999);

现在,在脚本或链接元素中加载CSS或JS文件等资源的任何地方,都会在附加“?”后将生成的随机值附加到请求URL通过PHP连接到URI:

    echo $rand;

就是这样!无论哪种浏览器,都不会再缓存您的网站。

当然,在发布之前删除代码,或者简单地将$rand设置为空字符串以允许再次缓存。

其他回答

我的情况是,浏览器从磁盘加载缓存数据,即使我检查了禁用缓存(我使用的是Chrome)。我所有的CSS和JS都是从服务器加载的,而不是网页。这发生在我的本地和生产部门。

为了解决这个问题,我需要在URL中添加一个额外的参数,以迫使浏览器从服务器获取网页,即使控制器不需要它。

我使用的是ASP.Net,所以这里是我的示例:

//Controller function
public ActionResult Index()
    {
        return View();
    }
//Link
@Html.Action("Index", "Home", new { ts = DateTime.Now.Ticks.ToString()})

结果是,它将生成如下链接:http://www.myweb.com/Home/Index?ts=636558555408282209

这是我的处境和解决方案。希望它能帮助一些人。

现在有更好更快的方法(Chrome版本59.x.x):

右键单击重载图标(url字段的左侧),您将看到一个下拉菜单,选择第三个选项:“空缓存和硬重载”。

此选项仅在开发人员工具打开时可用。(注意与选项2的区别:“硬重新加载”-cmd-shift-R)。这里没有清空缓存!

如何临时禁用缓存或以某种方式刷新页面以查看更改?

目前还不清楚你指的是哪种“缓存”。有几种不同的方法可以让浏览器持久地缓存内容。Web存储是其中之一,缓存控制是另一个。

一些浏览器还具有缓存,与服务工作者一起使用,以创建提供离线支持的渐进式Web应用程序(PWA)。

清除PWA的缓存

self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) })

要列出缓存键的名称,请运行:

self.caches.delete('my-site-cache')

按名称删除缓存密钥(即我的站点缓存)。然后刷新页面。

如果刷新后在控制台中看到任何与工作程序相关的错误,则可能还需要注销已注册的工作程序:

navigator.serviceWorker.getRegistrations()
  .then(registrations => {
    registrations.forEach(registration => {
      registration.unregister()
    }) 
  })

要明确的是,Chrome中的禁用缓存复选框(这里是v17,但我认为是v15)不在主设置UI中。它位于开发人员工具设置UI中。

从浏览器窗口的扳手图标菜单(首选项菜单)中选择工具→ 开发人员工具在出现的开发人员工具UI中,单击右下角的齿轮图标。选中“网络”部分的“禁用缓存”复选框。

除了禁用缓存选项(您可以通过开发人员工具窗口右下角的一个按钮--工具|开发人员工具,或Ctrl+Shift+I)之外,在开发人员工具的网络窗格上,您现在可以右键单击并从弹出菜单中选择“清除缓存”。