我有一个要更改的页面,但是只有在我重置浏览器缓存时才能看到更改。有什么我可以添加到我的 html 中的东西吗?
5 回答
您应该能够使用带有“元”标签的纯 HTML 来做到这一点。元标记属于“标题”标记,用于许多不同的事情,包括防止缓存和事实上的内容过期。
<meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Expires" content="-1" />
这是 2 个很好的标签。好的浏览器应该能识别它们。
我有时使用的一个技巧是向链接文件添加一个参数。因此,如果它是您要更新的样式表,请使用 screen.css?version=123 之类的内容。然后您可以将其更新为 124,浏览器将忘记它的缓存版本并再次获取它。注意不要在实时站点上过于频繁地更新——如果他们每次访问时都必须下载您的核心资源,您将毁掉用户的生活。
这样做意味着您只需处理文件的一个命名版本。这使它保持简单。
取决于您需要重新加载的资源。您可以使用许多不同的方法,一种常见的方法是使用版本控制或为请求添加时间戳。因此,当您获取需要绕过缓存的文件时,您可以使用时间戳来请求它们,例如(使用 C# + Razer 的示例)。
<script src="/Js/Functions.js?t=@DateTime.UtcNow.Ticks" type="text/javascript"></script>
没有办法从页面或其资源中真正清除浏览器的缓存。然而,有一些方法可以解决这个问题。
一种方法是将“版本号”附加到您的资源文件中。这会诱使浏览器认为该资源是一个不同的文件,并将再次下载它。这个问题有一些答案可以帮助你做到这一点。如果您使用 PHP/JSP/ASP.NET 等服务器端代码生成唯一的版本号以放入查询字符串中,则查询字符串方法可能是最容易控制和维护的。请注意,您必须将其构建为不会在生产中发生,否则您的用户将被迫在每个页面请求时重新加载资源,这将增加他们的加载时间。
由于您正在开发,另一种选择是在浏览器上使用一些开发人员工具来禁用缓存:
- Chrome 开发者工具对此有原生支持。有关如何在 Chrome 中禁用缓存的信息,请参阅此问题的已接受答案。请注意,您必须在 Chrome 中打开您的开发人员工具才能使缓存禁用工作。
- Firefox 有几种方法可以做到这一点,如SuperUser 上的这个问题中所列举的。
- Internet Explorer 的开发人员工具也支持这一点,这在 SuperUser 上的这个问题中很明显。您可能必须保持开发人员工具处于打开状态才能保持有效。
如果您使用不同(或多种)浏览器进行开发/测试,您应该能够谷歌如何禁用相应浏览器上的缓存。
Firefox 和 Chrome 也支持++ 或 +Ctrl用于无Shift缓存页面重新加载。RShiftF5