【发布时间】:2015-05-12 19:41:48
【问题描述】:
我正在尝试测试一些缓存配置,我希望我的页面在请求再次到达服务器之前在缓存中停留 1 分钟。
使用这个带有自身链接的简单 test.asp 页面:
<% Option Explicit %>
<%
Response.Expires = 1
Response.CacheControl = "private, max-age=60"
%>
<html>
<head><title>test</title></head>
<body>
<% =Now() %>
<br />
<a href="test.asp">test</a>
</body>
</html>
这在我的开发计算机http://localhost/test.asp 上完美运行,(单击链接不会在 1 分钟内刷新打印的日期时间)。
但是,当我将页面放在生产服务器上时,它并没有达到预期的效果。单击链接几秒钟后,我得到一个新的日期时间,这意味着请求到达了网络服务器。
我使用 Chrome 开发工具并看到这些响应标头:
HTTP/1.1 200 OK
Cache-Control: private, max-age=60
Content-Type: text/html
Expires: Tue, 12 May 2015 19:16:52 GMT
Last-Modified: Tue, 12 May 2015 19:10:00 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 12 May 2015 19:15:55 GMT
Content-Length: 205
谁能帮助解释为什么它在 prod 服务器上不起作用?
更新 我尝试使用 Chrome、Firefox 和 IE,以及 2 个页面 test.asp 和 test2.asp,它们都有指向另一个页面的链接,并且遇到了完全相同的问题,在 8-12 秒后,页面刷新而不是等待 60 秒刷新前。
【问题讨论】:
-
你是如何测试的?在同一选项卡中刷新?这可能是一个 chrome 问题:stackoverflow.com/questions/11245767/… 它在您的开发环境中运行的原因可能是 Chrome 无论如何都使用 'localhost' url 做一些时髦的事情..
-
我正在通过单击链接到自身的测试页面中的超链接进行测试。使用刷新按钮总是将请求发送到逻辑上的服务器。我会尝试使用其他浏览器,也可能不止一页。
-
太棒了!既然我刚刚开始赏金并再次尝试相同的代码,问题就神奇地消失了,到底是什么:|
-
当您在浏览器上进行刷新时,通常的行为是为 html 内容重新加载整个页面。我想你是在寻找 IIS 输出缓存来缓存服务器上的页面?
-
您确定示例响应标头属于 asp 响应吗?我问是因为有一个
Last-Modified,它是一个静态内容标头,无法从 asp 发送。你是手动添加的吗?
标签: asp-classic browser-cache http-caching