0

スクリプトがHeadJSを介してロードされる場合 Ctrl + F5(または同等の)キーボードショートカットを使用してコンテンツを強制的に更新することができません。

スクリプトは正しくキャッシュされ、ブラウザはサーバーから送信されたキャッシュディレクティブに従います(私はIIS 7.5を使用しています)。ただし、マークアップに直接含まれているスクリプトタグとは異なり、キャッシュをオーバーライドして、HeadJSを介してロードされたスクリプトを強制的に更新することはできません。

これは、スクリプトが動的にロードされる方法の結果であると思います。更新を強制することは開発中にのみ便利であり、サーバーからコンテンツを強制的に取得する他の方法を知っているので、この動作を維持できます。

なぜこれが当てはまるのか誰かが説明できるかどうか疑問に思いました...

アップデート

静的コンテンツのキャッシュディレクティブが適切に設定されているため、これはLiveでは問題になりませんでした。それは開発とQAでのみ問題でした。私が利用できるオプションは...

  • コンテンツをキャッシュしないように、すべてのDevおよびQAブラウザーを構成します。
  • 開発環境とQA環境では、静的コンテンツキャッシュディレクティブを異なる方法で構成します。基本的に、MaxAgeを非常に小さい値に設定すると、コンテンツは常に期限切れになります。Liveで正しいMaxAge値を設定するだけです。

私は2番目のオプションを選択しました。

4

3 に答える 3

2

動的なスクリプトの読み込みは、ページの読み込みの一部ではありません。強制的に更新すると、ブラウザはHTMLおよび参照されたCSSファイルで参照されているページとすべてのリソースを再読み込みしますが、ロードするスクリプトhead.jsはページコンテンツで参照されておらず、ブラウザはそれhead.jsが作成されることを認識できません。追加のリソースへの参照。これらの参照が作成された時点で、ブラウザはページを更新しなくなったため、通常のキャッシュルールが適用されます。

一意のクエリ文字列をURL(たとえばjquery.js?random=437593486394)に追加することでスクリプトを強制的に再読み込みできますが、これにより、更新を強制した場合だけでなく、ページのすべての読み込みのキャッシュが無効になります。

于 2012-10-02T09:09:55.427 に答える
1

これもrequire.jsの問題です。うまくいけば、これらの回避策の1つがHead.Jsにも適用されます。

  • Chromeを使用している場合は、[ネットワーク]タブの開発ツールパネルを開き、右クリックして[ブラウザのキャッシュをクリア]を選択します
  • jsリソースのクエリ文字列に日時スタンプを追加して、「キャッシュバスティング」を少し実行します
  • IISを使用している場合(あなたがそうであるように見えます)。Webサイトの[HTTP応答ヘッダー]パネルに移動し、[共通ヘッダーの設定]をクリックして、[Webコンテンツの期限切れ]を[すぐに]に設定します。

後者は私の開発マシンの私の好みのオプションです

IISHTTP応答ヘッダーパネル

于 2012-10-02T09:13:04.617 に答える
0

動的か動的でないかという問題は言いませんが、スクリプトを挿入すると、ブラウザはHTTPリクエストを作成し、適用するキャッシュロジックを適用します。

上記のように、スクリプトを動的または静的にキャッシュしたくない場合は、問題ではありません。通常、タイムスタンプをクエリ文字列の形式で追加する必要があります。

変更が機能しているかどうかを確認したいだけの場合は、ブラウザで強制更新を実行してください...通常はCTRL + F5

于 2012-11-07T11:46:29.603 に答える