很长一段时间以来,我一直在更新服务器上的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>但是他们中没有一个实际上采用了另一种方式,你必须在代码中手动处理它,而不是IIS
或IIS
配置。
我能找到的距离越近 "Asking browsers to cache our images (ASP.NET/IIS)" ,它们设置了到期但不是基于文件更新的事实。相反,他们使用数天或数小时来缓存这些文件,以便即使没有进行任何更改也会更新。
我想知道ASP.NET
或IIS
是否提供与此相关的内容,自动向浏览器发送文件已更改的内容。它是否可能/内置?
答案 0 :(得分:1)
您需要更新浏览器端,缓存项的选项为:
使用三个,你可以避免每个项目的一个服务器调用,但第三个选项会在一段时间后再次加载它。
与其他人一起,你必须打电话给服务器,看看是否需要再次加载它。
所以你不能拥有这一切,没有正确的方法,你需要选择最适合自己的东西,以及你能做些什么。从客户角度来看,更快的是(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
你可以找到更多。