目前在我的 HTML 页面上,我面临一个问题,即它没有从服务器检索最新页面而只是从缓存中获取它。为了解决这个问题,我在 IE 中选择了以下选项,这似乎解决了我的页面。
有什么方法可以在 HTML 或 JavaScript 中实现吗?HTML页面上的任何标签或属性?
感谢您的指导解决这个问题。
谢谢,jdp
目前在我的 HTML 页面上,我面临一个问题,即它没有从服务器检索最新页面而只是从缓存中获取它。为了解决这个问题,我在 IE 中选择了以下选项,这似乎解决了我的页面。
有什么方法可以在 HTML 或 JavaScript 中实现吗?HTML页面上的任何标签或属性?
感谢您的指导解决这个问题。
谢谢,jdp
如果您可以控制要获取的页面,请添加此标记:
<meta http-equiv="Cache-control" content="no-cache">
并且浏览器不会缓存它。
如果您知道您的页面有很多经常更改的内容,您可以通过 AJAX 请求仅获取该内容到您的服务器,而页面的其余部分可以保持不变。此外,您可以在构建 AJAX 请求时向发送到服务器的 URI 添加随机字符串,以确保绕过浏览器缓存:
var uri = "/fetchContent?param1=value1¶m2=value2...&rand=" + rand();
如果仅仅是因为您想测试您的页面并想要强制重新加载,那么 CTRL + F5 应该可以为 IE 和大多数其他浏览器解决问题。
当页面加载时,您可以检查是否有查询值。如果没有,那么您可以使用缓存破坏器重新加载页面。
我认为这会产生糟糕的用户体验。
如果你去: www.site.com
,它会缓存,去www.site.com?cb=1
会再次获取页面。这是一个缓存破坏者。您可以生成一个随机数并将页面重定向到具有新缓存破坏器的同一页面。
如果您提供静态 HTML 内容,那么每次您知道该页面应该使用缓存破坏器不同时,您都应该更改指向该页面的链接。
<a href="new_html.html?v=2">My Page</a>
在PHP
,这样的事情会做到这一点:
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
有关更多详细信息,请转到此处。