静态XML的缓存问题

本文关键字:问题 缓存 XML 静态 | 更新日期: 2023-09-27 18:19:02

我在IIS服务器上存储了一个XML文件。在执行的几个阶段,我的应用程序检索这个文件。基本上,它返回到服务器并再次获取文件。问题是应用程序出错,因为浏览器已经缓存了文件,所以没有返回文件。它返回一个304错误。我知道,当我在URL上传递一个更改ID时,它不会被缓存;问题是,这个文件有一个固定的位置,如果我把别的东西放在URL,它将找不到它。那么,有没有办法优雅地解决这个问题呢?不能在客户端更改缓存设置。我使用WebClient对象异步请求文件。谢谢!

静态XML的缓存问题

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>