c# - 动态 CSS - 缓存问题?

标签 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 主题添加查询字符串,所以样式表链接并不是一个简单的选项。

有什么想法吗?

最佳答案

这可以通过我在我的网站上使用的技术来解决,一旦 Assets 发生变化(例如在部署之后)就会重新加载 Assets 。

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

由于 URL 总是不同的,浏览器总是会重新加载它,它永远不会被放入缓存。

关于c# - 动态 CSS - 缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6628227/

相关文章:

c# - 如何获得字符串操作?

c# - 具有非基于文件的 key 的 SFTP

c# - 在 Asp.net HTML 控件中动态获取城市

c# - 如何在 .core mvc 中获取用户及其角色表?

javascript - 在页面加载时显示目录中的图像

jquery - 如何设置导航以更改某些点的字体颜色?

c# - LINQ 数据表返回 0 而不是空合并

c# - 这个正则表达式有什么问题吗?

asp.net - .net core 3.1 通过 URL 进行本地化/文化 - localhost/en/area?/controller/action

css - 是否有CSS父选择器?