2016-08-23 12 views
-1

複数のaspxおよびcshtmlページを持つ本番アプリケーションがあります。これらのページは頻繁に変更される複数のjavascriptを参照しています。aspxおよびcshtmlページからのjavascript参照のリフレッシュ

私たちはCDNを使用しているので、javascriptファイルを変更するたびに、参照されているすべてのaspx/cshtmlで手動でバージョンを変更します。 例: abc.aspxに[script src = "abc.js?v = 1"]があり、abc.jsを変更した場合、abc.aspxを手動で[script src = "abc.js ?v = 2 "]

これは、いくつかのaspxおよびjavascript/cssファイルでは非常に困難になります。

私はここでそれを読む: force browsers to get latest js and css files in asp.net application

しかし、提案のアプローチにはいくつかの問題があります。

  1. それは解決策のように見えるだろう、ユーザによって行われた要求ごとにバージョンjsが。これは正しくありません。私たちはパフォーマンス指向のウェブサイトなので、変更されない限りキャッシュする必要があります。
  2. すべての@Html.IncludeVersionedJs( "/ MyJavascriptFile.js")はmvcのみを検索します。これを行うにはウェブフォームのバージョンは何ですか?

基本的に我々は、手動でバージョン管理JavaScriptの参照を避けるとJavaScriptのいずれかが私の溶液中で変更された場合、それは自動的に新しいバージョンであまりにもそれに対応する参照を更新し検出するのに十分なインテリジェントな何かを構築したいです。

+0

なぜdownvote。コメントしてください! – maverick

答えて

0

おそらくRegisterClientScriptIncludeを使ってこれを達成できると思います。以下のような何か(あなたがそれに応じて微調整する必要があるかもしれないので、私はそれをテストしていない)

var physicalPath = context.Server.MapPath(filename); 
var version = "?v=" + new System.IO.FileInfo(physicalPath).LastWriteTime.ToString("yyyyMMddHHmmss"); 
Page.ClientScript.RegisterClientScriptInclude("script", filename + version); 

あなたはPhysicalPathのを確認する前に、キャッシング層を追加することができます。

関連する問題