在system.web.optimization中自定义缓存清除

Spo*_*ike 6 asp.net-mvc asp.net-optimization system.web.optimization

在优化开启时从包中呈现样式时,您可以获得:

<link href="/Content/themes/base/css?v=UM624qf1uFt8dYtiIV9PCmYhsyeewBIwY4Ob0i8OdW81" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

不幸的是,Android浏览器似乎没有加载带有查询字符串的URL.有没有办法在System.Web.Optimization中自定义此字符串?


编辑:

我的问题得到解答,我试图检测用户代理字符串上的android,并用一个查询字符串替换样式表.显然,我有问题,是不是因为查询字符串,它是精缩是造成它不能完全加载样式表在Android股票浏览器中的web字体的CSS版本.

Android股票浏览器无法加载带有转义反斜杠的css内容字符串,这是ASP.NET缩小器的一种解决方法,它会错误地缩小相同的css内容字符串.我最终将图标字体css样式放在它自己的"手工缩小"样式表上.

Dan*_*kov 9

您可以使用禁用缓存

@{string path = BundleTable.Bundles.ResolveBundleUrl("~/bundle/cssCommon", false);}
//may apply manual path transformation to remove ?v= anyway
<link href=@path rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

或简短形式

<link href="@BundleTable.Bundles.ResolveBundleUrl("~/bundle/cssCustom", false)"
Run Code Online (Sandbox Code Playgroud)

但是你会遇到与缓存相关的问题而不是android WebView问题.另一种可能的方法是使用Microsoft Ajax Minifier


Hao*_*ung 4

遗憾的是,我们目前不支持自定义版本字符串在 url 中的显示方式。

这是我们 codeplex 网站上问题的链接:Url version issues

同时,如果您愿意在每次更改捆绑包时手动调整捆绑包路径,则可以避免使用帮助程序,而只拥有指向捆绑包的显式链接,每次更改捆绑包时都会更新该链接:

<link href="/Content/themes/base/css" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

或者您可以通过以下方式禁用客户端上的缓存bundle.Cacheability = HttpCacheability.NoCache