今日免费次数已满, 请开通会员/明日再来

7
在 App_Theme 文件夹中的样式表会被缓存在浏览器中。该如何处理?以便每次新部署时,浏览器都会获取最新的样式表而不是缓存在浏览器中的旧样式表。
其他 CSS(不在主题文件夹中)也存在这种情况,因此使用了链接中提到的自定义控件。

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

这个如何在主题文件夹中的CSS中完成?
编辑:如下所述,Web.config中提到了主题名称。因此,不仅仅是我通过使用链接中提到的方法解决了HTML链接标签的问题。
 <pages styleSheetTheme="Default">
      <controls>

      </controls>
    </pages>
5个回答

6

我也遇到过这个问题,我的解决方案是在CSS文件名中添加版本号,虽然不太美观,但在不禁用IIS缓存的情况下,我想不出其他方法。

将CSS文件重命名为mycss-V1.0.css,这将强制用户的Web浏览器重新加载CSS。


4
在部署Web应用程序时,请在主题路径中包含版本号。例如: App_Themes / Default / v1.2.0.4321 / ,其中 v1.2.0.4321 是添加到版本1.2.0.4321的文件夹。这样可以保留主题名称(例如“Default”)和文件名,从而使源代码控制和路径引用更加容易。无论子文件夹如何,ASP.NET都会加载当前主题文件夹中的所有CSS文件。这不仅解决了引用CSS文件的问题,还解决了从CSS文件内引用的图像(例如background-image)的问题。
此外,可以增加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>

0

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

有时候我们正在部署 CSS 并希望立即将它们推送给用户,但无法对引用自 asp 文件的 css 文件进行版本控制(例如 style.css?v2)。

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


0

0

这是针对位于app_theme文件夹内的CSS。主题名称仅在web.config中提到。 - dhinesh
@dhinesh,我可能需要更多的信息才能为您找到合适的答案。 - nivanka
这实质上不会在客户端缓存CSS,因此每个请求的每个页面都需要强制进行新的下载?这将增加服务器的负载。在实施之前,我会考虑一下这个问题。 - Rippo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接