App_Theme文件夹中的样式表会在浏览器中缓存。该方法应该是什么?因此,只要有新的部署,浏览器就应该采用最新的样式表,而不是浏览器中缓存的样式表。
这也发生在其他css(不在主题文件夹中),所以使用链接中提到的自定义控件
http://blog.sallarp.com/asp-net-automatic-css-javascript-versioning/
如何在Theme文件夹中对CSS进行此操作?
编辑:主题名称在web.config中提到,如下所述。所以它不仅仅是我使用链接中提到的方法解决的html链接标记。
<pages styleSheetTheme="Default">
<controls>
</controls>
</pages>
答案 0 :(得分:5)
我也遇到过这个问题,而我提出的解决方案是在你的CSS文件名中添加一个版本,不是很漂亮,但是在IIS上没有禁用缓存我无法想到。
重命名CSS文件 mycss-V1.0.css,这会迫使你的 用户的Web浏览器重新加载CSS
答案 1 :(得分:4)
部署Web应用程序时,请在主题路径中包含版本号。例如,App_Themes/Default/v1.2.0.4321/
,其中v1.2.0.4321
是在部署版本1.2.0.4321时添加的文件夹。这保留了主题名称(例如,“Default”)和文件名,这使得源代码控制和路径引用更加容易。无论子文件夹如何,ASP.NET都会加载当前主题文件夹中的所有CSS文件。这不仅解决了引用CSS文件的问题,还解决了CSS文件中引用的图像(例如背景图像)。
此外,App_Themes的浏览器缓存持续时间可能增加以提高性能,同时确保下次更新Web应用程序时,所有主题文件都将更新。
将此添加到Web.Config的<configuration>
部分,让浏览器缓存120天。
<location path="App_Themes">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="120.00:00:00" />
</staticContent>
</system.webServer>
</location>
答案 2 :(得分:0)
您可以为css文件名添加时间戳或使用htaccess设置缓存限制,如此处所述http://css-tricks.com/can-we-prevent-css-caching/
答案 3 :(得分:0)
答案 4 :(得分:0)
浏览器缓存基于响应标头或浏览器设置中设置的到期时间。
我们正在部署CSS并希望立即将它们推送给用户,但是无法版本从asp文件引用的css文件(例如style.css?v2
)
在这些情况下,我们可以将特定CSS文件中的已更改/新样式类单独添加到aspx文件的Head部分。它不会创建任何样式覆盖并解决问题。