如何仅使用Web服务器中的配置使浏览器缓存无效?

时间:2014-08-12 14:13:28

标签: asp.net iis browser-cache

很长一段时间以来,我一直在更新服务器上的ASP.NET页面,但从未找到正确方式,可以对CSS和{{1}等文件进行更改}}

我知道如果浏览器images中附加某些内容会认为该文件是另一个:

URL

或者可能更改其名称:

<img src="/images/myLogo.png?v=1"/>

不幸的是,它看起来不正确。在我使用<img src="/images/myLogo.v1.png"/> 的情况下,此文件夹中的文件会自动注入页面,我无法轻易更改App_Themes

所以我的问题是:

当我在服务器上发布de URL时,向ASP.NET Application发出信号的正确方法是什么(并在之后通知浏览器)文件被更改了?这不是自动的吗?我应该更改IIS中的某些配置,还是在代码中添加一些“ decoration ”?

我已经尝试了很多问题,例如 "ASP.NET - Invalidate browser cache""How to refresh the browser cache of an image?""Handle cached images? How to get the browser to show the new version?" ,甚至 "What is an elegant way to force browsers to reload cached CSS/JS files?" < / em>但是他们中没有一个实际上采用了另一种方式,你必须在代码中手动处理它,而不是IISIIS配置。

我能找到的距离越近 "Asking browsers to cache our images (ASP.NET/IIS)" ,它们设置了到期但不是基于文件更新的事实。相反,他们使用数天或数小时来缓存这些文件,以便即使没有进行任何更改也会更新。

我想知道ASP.NETIIS是否提供与此相关的内容,自动向浏览器发送文件已更改的内容。它是否可能/内置?

1 个答案:

答案 0 :(得分:1)

您需要更新浏览器端,缓存项的选项为:

  1. 更改文件名
  2. 添加网址参数
  3. 将其置于缓存中有限时间(例如,几个小时)
  4. 比较创建日期时间
  5. 使用 eTag 发信号。
  6. 使用三个,你可以避免每个项目的一个服务器调用,但第三个选项会在一段时间后再次加载它。

    与其他人一起,你必须打电话给服务器,看看是否需要再次加载它。

    所以你不能拥有这一切,没有正确的方法,你需要选择最适合自己的东西,以及你能做些什么。从客户角度来看,更快的是(1)和(2)选项。

    对您的问题的直接回答是使用文件创建的eTag或日期时间比较但是你放松了,调用服务器,你只能赢回旅行的大小。

    更多链接:
    http eTag
    How do I support ETags in ASP.NET MVC?
    Configuring ETags with Http module in asp.net
    How to control web page caching, across all browsers?
    Jquery getScript caching

    你可以找到更多。