C# 动态CSS缓存问题?
我正在使用HttpHandler动态修改一些CSS(仅简单的颜色),这是基于我在上一篇文章中读到的一种技术 除了在我给用户指定他们想要的颜色的选项的页面上,一切都很好。理想情况下,只要用户保存新颜色,页面刷新,我就希望显示新颜色。但是,它们只有在我明确按下浏览器重新加载或F5键时才会出现 我很感激某个地方(IIS或浏览器)正在对我的样式表进行一些有用的缓存,1000次缓存999次正是我想要的,但是在这个特定的页面事件中,我希望能够强制重新加载并触发HttpHandler 有人知道这是怎么回事,我能做什么吗 我尝试过的事情:C# 动态CSS缓存问题?,c#,asp.net,css,caching,httphandler,C#,Asp.net,Css,Caching,Httphandler,我正在使用HttpHandler动态修改一些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主题添加查询字符串,所以样式表链接并不是一个简单的选项
有人想过吗?这可以通过我在网站上使用的技术来解决,这种技术可以在资产发生变化后(例如部署后)重新加载资产 将
?value
附加到CSS url的末尾,其中value
对应于版本,或者浏览器尚未看到的某个唯一值。在我的例子中,我使用文件修改时间,但是在你的例子中,因为CSS在几乎每个页面加载上都是动态的,所以我建议生成一些独特的值
由于URL总是不同的,浏览器总是会重新加载它,而且它永远不会被放入缓存。保存用户首选项的控件是一个很好的老式帖子,对吗?我不是ASP.net的人,但是有没有办法更改样式表的名称?这将停止代理级别和浏览器级别的缓存。“因为我还使用ASP.NET主题添加查询字符串,所以样式表链接不是一个简单的选项。”啊,我明白了。我不熟悉ASP.NET主题;但是,能否验证服务器/客户端时钟是否同步?如果您在过去某一天设置了expires,并且客户端的时钟错误,那么这可能不起作用。正如问题所述,我正在寻找一种不需要修改样式表的querystring的解决方案…好的,那么您需要确保所有客户端都尊重您设置的expires标头。更改URL肯定会导致新请求。如何确保客户端尊重expires标头?这不就是浏览器的问题吗?在服务器端我无法控制吗?