6

我只是想知道是什么导致我的 xap 每半天(大约)到期。我的意思是,早上用户访问该网站并下载 xap 的副本,如果该用户返回该网站并且该网站为他们下载另一个 xap 副本,则到下午。

我希望用户需要下载 xap 的新副本的唯一原因是他们清除了浏览器缓存或我在服务器上放置了新副本。

关于问题和解决方法的任何想法?

我在 XAP 下载中运行了 fiddler,并从 fiddler 中的 xap 下载条目的缓存选项卡中获得了以下几行。

默认情况下,HTTP/200 响应是可缓存的,除非存在 Expires、Pragma 或 Cache-Control 标头并禁止缓存。


HTTP/1.1 ETAG 标头存在:“2ad1d6bfdd43cb1:0” HTTP Last-Modified 标头存在:2010 年 8 月 24 日星期二 22:43:19 GMT

未提供显式 HTTP 过期信息。大多数浏览器使用启发式过期策略:Last-Modified 和 Date 之间的 10% 的增量是“02:53:34”,因此此响应将在 26/08/2010 下午 4:39:26 启发式过期。


这会是问题所在吗?我在哪里设置显式 HTTP 过期?

4

3 回答 3

2

首先要做的是:-

  • 安装Fiddler的副本。
  • 删除您的临时 Internet 文件。
  • 运行提琴手。
  • 访问您的主机网页。
  • 在 fiddler 中找到代表 Xap 下载的 HTTP 会话
  • 将原始响应标题添加到您上面的问题中。

这将为真正的问题是什么提供一组非常重要的线索。

刷新时会发生什么?您是否看到第二个 XAP HTTP 会话返回状态 304 响应?如果您得到 200,则将 第二次尝试的原始请求标头及其原始响应标头添加到您的问题中。

如果您确实得到了 304,请将其保留适当的时间然后再试一次,它仍然给出状态 304 吗?如果不这样做,则与上述相同。

这些数据将为我们提供大量信息以提供诊断。

于 2010-08-25T11:55:01.480 回答
0

我认为 HiTech Magic 暗示的是您需要能够在 IIS 中调整此设置。从 Fiddler 所说的看来,您的 IIS 似乎没有设置内容过期时间,我认为这是默认设置。

这是如何在 IIS 6 中执行此操作:http: //www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/0fc16fe7-be45-4033-a5aa-d7fda3c993ff.mspx? mfr=true 这是如何执行的它在 IIS 7 中:h'ttp://technet.microsoft.com/en-us/library/cc770661(WS.10).aspx

于 2010-09-16T20:38:31.963 回答
0

如果您使用的是 ASP.Net(您可以编辑您的帖子以让我们知道您的后端是什么吗?),请尝试使用Response.Cache.SetCacheability。有一些陷阱

于 2010-09-16T23:39:45.600 回答