3

友達、

最近、Rich UI の対話機能用の JavaScript を多数含む Web サイト (ASP.Net を使用して開発) をクライアントの場所でホストしました。すべて正常に動作しています。しかし、主な問題は -

JavaScriptファイルに変更を加えてアップロードすると、クライアントの場所では有効になりません。WebサイトがローカルにキャッシュされたJavaScriptファイルを取得するためです。

では、どうすればこれを回避できますか?

私の問題を解決するために利用できるテクニックはありますか?

4

5 に答える 5

6

URLの最後にランダムに生成された番号/タイムスタンプをjsファイルに追加します-

http://example.com/my_js_file.js?12345

于 2012-07-28T05:38:07.627 に答える
2

少し調査した結果、ほとんどのブラウザーをカバーしていると思われるヘッダーの次のリストを思いつきました。

ASP.NET では、次のスニペットを使用してこれらを追加しました。

Response.ClearHeaders(); 
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0 
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.0 

から見つけた: http://forums.asp.net/t/1013531.aspx


ここ から上記のソリューション。

于 2012-07-28T05:34:22.640 に答える
1

scriptJavascript をロードするためのタグだけではなく、動的にロードする

<script>
    function loadScript(name) {
        var s = document.createElement("script");
        s.src = name + "?" + (new Date).getTime();
        document.body.appendChild(s);
     }
     loadScript("script1");
     loadScript("script2");
 </script>
于 2012-07-28T05:44:36.540 に答える
0

この回答のキャッシングに関するメモを参照してください: Making a show/hide small

キャッシュを友達と考えてください。

于 2012-07-28T05:43:20.590 に答える
-1

キャッシュの有効期限を使用してブラウザーがリソースをキャッシュするのを回避するなどの手法があります。

protected void Application_BeginRequest()
{
  //NOTE: Stopping IE from being a caching whore
  HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(false);
  HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
  HttpContext.Current.Response.Cache.SetNoStore();
  Response.Cache.SetExpires(DateTime.Now);
  Response.Cache.SetValidUntilExpires(true);
}

しかし、あなたの場合、これはお勧めできません。あなたのプロジェクトは開発段階にあり、cntrl + F5リソースがリロードされ、キャッシュされたリソースが削除されて再度リロードされることを避けるために、この救済策を実装しないでください。サイトが遅くなるためです。パフォーマンス。

cntrl + F5よりシンプルで合理的な解決策は、サイトの最近の変更を見たいときはいつでも協力して押すようにクライアントに指示することです.開発段階でのみ使用し、サイトを公開する前に削除してください。

于 2012-07-28T05:33:39.643 に答える