App_Theme文件夹中的CSS在浏览器中获得缓存

时间:2010-12-23 09:13:15

标签: asp.net css

App_Theme文件夹中的样式表会在浏览器中缓存。该方法应该是什么?因此,只要有新的部署,浏览器就应该采用最新的样式表,而不是浏览器中缓存的样式表。

这也发生在其他css(不在主题文件夹中),所以使用链接中提到的自定义控件

http://blog.sallarp.com/asp-net-automatic-css-javascript-versioning/

如何在Theme文件夹中对CSS进行此操作?

编辑:主题名称在web.config中提到,如下所述。所以它不仅仅是我使用链接中提到的方法解决的html链接标记。

 <pages styleSheetTheme="Default">
      <controls>

      </controls>
    </pages>

5 个答案:

答案 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)

也可以将时间戳作为get参数发送。

EG:

http://mysite.com/theme/dir/style.css?id=24033957203712

其中24033957203712是时间戳。

答案 4 :(得分:0)

浏览器缓存基于响应标头或浏览器设置中设置的到期时间。

我们正在部署CSS并希望立即将它们推送给用户,但是无法版本从asp文件引用的css文件(例如style.css?v2

在这些情况下,我们可以将特定CSS文件中的已更改/新样式类单独添加到aspx文件的Head部分。它不会创建任何样式覆盖并解决问题。