2009-10-05 57 views
3

当我们的客户测试我们的ASP.NET网络应用程序时,我们看到一些奇怪的错误。每个页面的顶部都有一个购物车计数器,告诉您购物车中有多少物品。她报告说,随着她从一个页面移动到另一个页面,这个数字正在发生变化。我们不能重新创建这个。公司代理缓存整个页面吗?

她的企业代理服务器是否有可能缓存整个页面并且从未实际联系我们的服务器?这是http上的暂存站点,她的制作网站位于https上。

修订:页面也通过HTTPS缓存。它显示了我们的购物车页面的完全缓存版本。如果用户点击刷新按钮,他们将获得该页面的当前版本,但该新版本将成为缓存版本。

+0

你有没有nocache和各种其他“请不要缓存这个页面”命令设置在应用程序? – 2009-10-05 14:30:29

+0

不是特别的,但我们以前从未遇到过这个问题。我是否总是必须专门告诉代理服务器哪些内容是动态的? – JoshBaltzell 2009-10-05 15:35:41

回答

2

在IE中还有一个设置可能导致此行为。转到“工具”>“Internet选项”。在“常规”选项卡上,点击“浏览历史记录”下的“设置”。确保“检查存储页面的更新版本”设置为“自动”。这是默认值。

我有一个用户将其更改为“从不”,并想知道他为什么总是看到旧内容。 :)

+0

我只是通过电子邮件发送给客户,看看这是不是问题。我可以通过在IE6机器上更改此设置来重新创建此问题。好主意! – JoshBaltzell 2009-10-05 20:49:16

+0

这正是问题所在。用户将他们的IE设置为永远不会获得新版本的网页。为什么这样设置,我可能永远不会知道。 非常感谢您的信息。这确实为我节省了许多小时的工作。 – JoshBaltzell 2009-10-06 16:35:21

3

中间代理(企业或其他)缓存页面当然是可能的。虽然我不明白这将如何解释页面上的购物车号码。如果你不希望任何缓存发生,发送相应的HTTP报头与每个沿要求你不想缓存:

Cache-Control: private, no-store, max-age=0 
Expires: <some date in the past> 
Pragma: no-cache 

上面的第一行是HTTP 1.1客户端,并且第二2对于HTTP 1.0客户端。查看HTTP 1.1协议规范的14.9部分了解所有血腥细节。

+0

代理服务器是否必须服从HTTP过期标头? – 2009-10-05 14:33:05

+0

这是一个错误,因为这些值是为了控制代理行为。 – 2009-10-05 14:37:28

+1

@Dominic Rodger是的,如果它遵循规范。但它是一个荣誉系统:(赔率是,但你不处理一个邪恶的代理:) – Asaph 2009-10-05 14:37:43