2017-03-28 14 views
0

コードがデプロイされた後、クライアントに古いjs、cssファイルが提供されるという問題が発生しています。私たちはWebサーバーとしてIISを使用しており、コードはASP.Net 4.5にあります。私はいくつかの研究を行い、キャッシュコントロールと連携したETagが機能するはずであることを理解しました。私はETagが自動的にファイルのタイムスタンプに基づいてWebサーバーによって生成されることを理解しているので、システムがjsとcssファイルの最新バージョンを送信していない理由を確認するために次の手順を実行しました。 Webページレットの呼び出しに私のウェブサイトに移動 新しいコードをデプロイした後で強制的にキャッシュのリフレッシュを実行する

  1. はdemo.aspxです。
  2. がa.jsことを確認済み(今でdemo.aspxと仮定するとa.js、b.jsとc.cssへの参照が含まれています) 、b.jsとc.cssファイルがブラウザーで要求され、Webサーバーが私のWebサイトのページ(Ctrl + F5)を参照した後にそれらのファイルを配信しました。他のいくつかのWebページ
  3. をクリック
  4. は再びdemo.aspxする
  5. (これらのファイルの日時スタンプを更新するa.js、b.jsとc.css)ナビゲートをwebserveに行って、手動で更新されたファイル。
  6. 今回はdemo.aspxに対してのみ要求されたが、リソースファイル(a.js、b.js、c.css)には要求されません。

demo.aspxページにアクセスすると.jsファイルが要求されないのはなぜですか?

また、コードをデプロイするたびに、最新バージョンの.jsファイルと.cssファイルをクライアントブラウザにダウンロードさせる簡単な方法はありますか。私の研究に基づいて、.jsファイルと.cssファイルの名前を変更する方法があることがわかりました。この点は私たちのためには役に立たないことにご注意ください。

プロジェクトでは更新パネルを使用しています。 2回目にjsファイルを要求していないブラウザと何か関係があるかどうかわからない

答えて

0

広く使用されている方法は、cssまたはjsファイルの新しいバージョンごとに増分されるクエリ文字列パラメータを追加することです。

好きなものはmyScript.js?version=12です。番号が変更されると、ブラウザはそれを新しいファイルとして認識し、キャッシュから取得するのではなくダウンロードします。

ファイルを編集してタイムスタンプを変更するだけでは、ブラウザはタイムスタンプを取得できません。ウェブサイトから画像やファイルを保存することでこれを試すことができます。ダウンロードしたときのタイムスタンプはすべて保持されます。

+0

ありがとう@VDWWDその提案です。私はそれについて読んだことがありますが、この解決法は私たちにとっては役に立たないでしょう。 – CSC