Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态CSS缓存问题?_C#_Asp.net_Css_Caching_Httphandler - Fatal编程技术网

C# 动态CSS缓存问题?

C# 动态CSS缓存问题?,c#,asp.net,css,caching,httphandler,C#,Asp.net,Css,Caching,Httphandler,我正在使用HttpHandler动态修改一些CSS(仅简单的颜色),这是基于我在上一篇文章中读到的一种技术 除了在我给用户指定他们想要的颜色的选项的页面上,一切都很好。理想情况下,只要用户保存新颜色,页面刷新,我就希望显示新颜色。但是,它们只有在我明确按下浏览器重新加载或F5键时才会出现 我很感激某个地方(IIS或浏览器)正在对我的样式表进行一些有用的缓存,1000次缓存999次正是我想要的,但是在这个特定的页面事件中,我希望能够强制重新加载并触发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标头?这不就是浏览器的问题吗?在服务器端我无法控制吗?