动态CSS - 缓存问题?

时间:2011-07-08 17:38:14

标签: c# asp.net css caching httphandler

我正在使用HttpHandler根据我在SO上阅读的技术动态修改一些CSS(只有简单的颜色)。

在我给用户提供指定所需颜色的选项的页面上,一切正常。理想情况下,只要用户保存新颜色并刷新页面,我就希望显示新颜色。但是,当我明确按下浏览器重新加载或F5键时,它们才会通过。

我感谢某些地方(IIS或浏览器)正在对我的样式表进行一些有用的缓存,其中1000次中的999次正是我想要的,但是在这个特定的页面事件中我希望能够强制重新加载并导致要开火的HttpHandler。

任何人都能理解这是如何运作的以及我能做些什么?

我尝试过的事情:

    Response.Clear();
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Expires = -1;
    Response.Cache.SetExpires(DateTime.Now.AddDays(-1));

因为我也在使用ASP.NET主题添加查询字符串,所以样式表链接并不是一个简单的选项。

有人想到吗?

1 个答案:

答案 0 :(得分:0)

这可以通过我在我的网站上使用的技术解决,以便在资产更改后重新加载资产,例如在部署之后。

?value附加到CSS网址的末尾,其中value对应于版本,或者浏览器尚未看到的某些唯一值。在我的情况下,我使用文件修改时间,但在你的情况下,因为几乎每个页面加载CSS都是动态的,我建议生成一些独特的值。

由于URL始终不同,因此浏览器将始终重新加载它,并且永远不会将其放入其缓存中。