我在IIS服务器上存储了一个XML文件。在执行的几个阶段,我的应用程序检索这个文件。基本上,它返回到服务器并再次获取文件。问题是应用程序出错,因为浏览器已经缓存了文件,所以没有返回文件。它返回一个304错误。我知道,当我在URL上传递一个更改ID时,它不会被缓存;问题是,这个文件有一个固定的位置,如果我把别的东西放在URL,它将找不到它。那么,有没有办法优雅地解决这个问题呢?不能在客户端更改缓存设置。我使用WebClient对象异步请求文件。谢谢!
304不是错误,它是根据HTTP响应代码规范的"未修改"指示。您可以尝试在查询字符串中添加一两个随机数,以便尝试获得200。
尝试在请求中设置If-Modified-Since标头,以便执行条件GET请求。然后,您可以检查未修改(HTTP 304)状态码,如果它被修改,然后做一些事情;否则,让浏览器使用缓存版本。
下面是一篇关于这个技巧的博客文章:在代码中设置If-Modified-Since标头第一次下载XML文件时,IIS的设置告诉客户端可以缓存该文件。您可以修改包含XML文件的目录的缓存设置,这样它就会告诉客户端不要缓存任何东西。
的例子:
<configuration>
<location path="myXmlFiles">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
</configuration>