6

最適化がオンになっているときにバンドルからスタイルをレンダリングすると、次のようになります。

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

残念ながら、Androidブラウザはクエリ文字列を含むURLをロードしていないようです。System.Web.Optimizationでこの文字列をカスタマイズする方法はありますか?


編集:

私の質問に答えて、ユーザーエージェント文字列でandroidを検出し、スタイルシートへのリンクのないクエリ文字列に置き換えようとしました。どうやら私が抱えていた問題はクエリ文字列のせいではなく、Androidストックブラウザにスタイルシートを完全にロードしない原因となったのはウェブフォントcssの縮小版でした。

Androidストックブラウザは、エスケープされたバックスラッシュを使用してcssコンテンツ文字列を読み込めません。これは、同じcssコンテンツ文字列を誤って最小化するASP.NETミニファイアの回避策でした。結局、アイコンフォントのcssスタイルを独自の「手作業で縮小」したスタイルシートに配置することになりました。

4

2 に答える 2

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 を使用することです

于 2013-03-11T09:37:24.007 に答える
4

残念ながら、バージョン文字列が URL に表示される方法のカスタマイズは現在サポートされていません。

これは、codeplex サイトの問題へのリンクです: URL バージョンの問題

それまでの間、バンドルを変更するたびに手動でバンドル パスを変更することをいとわない場合は、ヘルパーの使用を避け、バンドルが変更されるたびに更新するバンドルへの明示的なリンクを設定するだけで済みます。

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

または、クライアントでキャッシュを無効にすることもできますbundle.Cacheability = HttpCacheability.NoCache

于 2013-03-11T20:41:15.907 に答える