2012-05-02 13 views
6

ASP.Net WebサイトのJavaScriptおよびスタイルシートの参照にキャッシュバスター変数を自動的に適用および/または更新するには、どのような方法が適していますか?ASP.Netのキャッシュバスター戦略

など。

<script type="text/javascript" src="/js/myScript.js?rev=12345" /> 

UPDATEに

<script type="text/javascript" src="/js/myScript.js" /> 

の変換:継続的インテグレーションが必要とされていません。 私は継続的な統合を使用しています(具体的にはJenkins)。そのため、変数の更新方法がビルド番号などに基づいていると効果的です。

私は元の変数を手動でソースコードに適用し、戦略を介して更新するだけで、元の変数が存在していない場合でも戦略を適用できればいいですレガシーコード)。

すべての* .aspxファイルと* .ascxファイルをスキャンし、適切な参照を見つけて更新する正規表現を使用するPowershellスクリプトを使用すると想像することができます。しかし、あなたは、彼らは正規表現を使用することについて言うことを知っている...そして、私は二つの問題:)

答えて

3

を持ってASP.Netのキャッシュバスター変数への答えは、さまざまなCSS/JSの縮小ライブラリの1を使用することです。

私はキャッシュバスター変数は、当社のサーバーへの各展開で更新する必要があるだろうと考えていたが、縮小ライブラリが内容、個々のCSS/JSファイルのに基づいてハッシュタグを適用します。

私は.Net 3.5ウェブサイトを開発して以来、私の選択肢は少し制限されていました。私はSquishIt(NuGetパッケージとして入手可能)を使用して終了しました。それは簡単に統合できました。

<link href="/<my_css_path>/<css_file_1>.css" rel="stylesheet" type="text/css" /> 
<link href="/<my_css_path>/<css_file_2>.css" rel="stylesheet" type="text/css" /> 
<link href="/<my_css_path>/<css_file_3>.css" rel="stylesheet" type="text/css" /> 

<%= Bundle.Css() 
    .Add("~/<my_css_path>") 
    .Render("~/<my_css_path>/combined_#.css") %> 

となり、それは基本的にそれです! javascriptと同様の考え方。ローカル開発用のweb.configには debug="true"、ステージング/プロダクション環境用には debug="false"である限り、SquishItはローカル開発用にCSS/JSを分離していない状態にしてから、 ハッシュ(キャッシュ破棄用)他の環境。

+0

これはすばらしいことだと思います。 – devlord

3

また、カセット、RequestReduce、およびBundlerを調べることもできます。

Cassette:JavaScript、CoffeeScript、CSS、LESS、Sass、HTMLテンプレートを自動的に並べ替え、連結し、縮小し、バージョンを変更します。

RequestReduceは、より速く、あなたのウェブサイトを作ります - 時々はるかに高速 - ほとんどない努力

  • 自動Minifies CSSとJavascript
  • スプライトPNG形式と圧縮を最適化します
  • あなたの背景画像からスプライトを生成してキャッシュヘッダーとETagsを最適化する
  • Classic ASPとPHPを含むIIS Webサイトで実行する
  • 「コンパイル、縮小化は、以下/サス/ CSS/JS/CoffeeScriptのファイルを結合します:
  • はのCDN
  • とよく
  • 作品
  • 少なく、サスやコーヒースクリプト

Bundlerをコンパイルしたコンテンツaccross複数のWebサーバを同期できます。 MVCから簡単に使用する "