使用Javascript强制网页过期

使用Javascript强制网页过期,javascript,asp-classic,browser-cache,Javascript,Asp Classic,Browser Cache,在经典ASP中,我告诉浏览器使用以下命令将某个页面缓存一小时: response.expires = 60 这很好,因为用户在一小时内的后续页面加载是即时的,并且不需要查询后端数据库 该页面允许用户使用Javascript对页面进行更改。这些更改很少发生,但当它们发生时,我希望缓存的页面过期,以便下次访问页面时加载页面的新副本,而不是没有用户更改的缓存版本 Javascript中是否有方法告诉浏览器当前页面已过期,并将其从缓存中清除?或者,ASP中是否有一种方法可以告诉浏览器刷新缓存页面,即使

在经典ASP中,我告诉浏览器使用以下命令将某个页面缓存一小时:

response.expires = 60
这很好,因为用户在一小时内的后续页面加载是即时的,并且不需要查询后端数据库

该页面允许用户使用Javascript对页面进行更改。这些更改很少发生,但当它们发生时,我希望缓存的页面过期,以便下次访问页面时加载页面的新副本,而不是没有用户更改的缓存版本


Javascript中是否有方法告诉浏览器当前页面已过期,并将其从缓存中清除?或者,ASP中是否有一种方法可以告诉浏览器刷新缓存页面,即使它尚未过期?

以下是我迄今为止找到的最佳解决方法

在对页面进行更改之后,我使用AJAX向缓存页面发送了一个POST请求。在帖子中,我放置了一个带有当前时间戳的
缓存
参数。在缓存页面的顶部,我检查
cache
参数,并立即退出以避免加载整个页面

通过发布到页面,该页面的缓存将被清除。但是,这是对服务器的附加请求,因此可能会有更好的答案。它在InternetExplorer11中也不起作用,所以我禁用了IE浏览器的缓存

if (request.form("cache") <> "") then
    response.end
end if

' check for IE '

Dim Regex, match
Set Regex = New RegExp
With Regex
    .Pattern = "(MSIE|Trident)"
    .IgnoreCase = True
    .Global = True
End With
match = Regex.test(Request.ServerVariables("HTTP_USER_AGENT"))
If match then
    ' no cache, :( '
else
    response.expires = 60
end if
if(request.form(“cache”)“”)那么
答复:完
如果结束
“检查是否存在IE”
Dim正则表达式,匹配
Set Regex=New RegExp
用正则表达式
.Pattern=“(MSIE |三叉戟)”
.IgnoreCase=True
.Global=True
以
match=Regex.test(Request.ServerVariables(“HTTP\u USER\u AGENT”))
如果匹配的话
'没有缓存,:('
其他的
response.expires=60
如果结束

在我的最终实现中,我现在发送设置更改信息,而不是在POST请求中传递哑时间戳。通过将设置更改保存为缓存清除POST请求的一部分,我可以避免执行两个单独的请求(一个用于保存更改,另一个用于清除缓存)。我仍然可以看到
缓存
参数方法的案例,但在我的案例中,所有一个请求对我来说都非常有效。

您可以使用虚拟查询字符串调用页面,例如
mypage.asp?new=123
,这将强制浏览器下载新的copy@YuriyGalanter问题是应用程序中的所有页面都引用了缓存了没有参数的页面,因此我将使用参数缓存一个新副本,但主页不会刷新。