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

时间:2013-03-08 09:17:40

标签: asp.net-mvc asp.net-optimization system.web.optimization

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

<link href="/Content/themes/base/css?v=UM624qf1uFt8dYtiIV9PCmYhsyeewBIwY4Ob0i8OdW81" rel="stylesheet" type="text/css" />

不幸的是,Android浏览器似乎没有load urls with query strings您是否可以通过某种方式在System.Web.Optimization中自定义此字符串?


修改:

  

我的问题得到解答,我试图在用户代理字符串上检测android,并用一个querystring less链接到样式表。显然我遇到的问题不是因为查询字符串,而是webfont css的缩小版本导致它不能在Android股票浏览器中完全加载样式表。

     

Android股票浏览器fails to load css content string with escaped backslash,这是{minminifier} erronously minifies the same css content string的解决方法。我最终将图标字体css样式放在它自己的“手工缩小”样式表上。

2 个答案:

答案 0 :(得分: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" />

或缩写

<link href="@BundleTable.Bundles.ResolveBundleUrl("~/bundle/cssCustom", false)"

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

答案 1 :(得分:4)

我们目前不支持自定义版本字符串在网址中的显示方式。

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

与此同时,如果您愿意在每次更改捆绑包时手动修改捆绑包路径,那么您可以避免使用帮助程序,只需拥有指向捆绑包的明确链接,每次捆绑包都会更新变化:

<link href="/Content/themes/base/css" rel="stylesheet">

或者您可以通过bundle.Cacheability = HttpCacheability.NoCache

在客户端上禁用缓存