問題タブ [cache-control]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
387 参照

http - ブラウザがコンテンツをキャッシュするのに問題がある

これは他の多くの質問と非常に似ているように見えて申し訳ありませんが、私が見ることができるすべての関連投稿を見ましたが、私とまったく同じ問題を抱えているようには見えません;-)

問題は、.js、.css、およびイメージのクライアント側キャッシュを Apache2 サーバーから動作させることができないことです (Windows で Ubuntu Apache/2.2.8 と WAMP Apache の両方を使用しています)。

デフォルト設定では、適切な ETag スタイルのサーバー主導のキャッシュ (304 応答) が得られますが、Header Unset コマンドを仮想ホスト構成ファイルに入れてこれをオフにし、Caching ディレクティブ (以下を参照) で補足すると、うまくいきません。ブラウザによって尊重されているようです。

Firebug を使用すると、キャッシュされたファイルがさらに数時間有効であることをブラウザーが認識していることがわかりますが、とにかくそれを要求します。

これをデバッグする方法に関するヒントは大歓迎です。

ホスト構成の関連部分を以下に示します。

0 投票する
10 に答える
28331 参照

xmlhttprequest - Microsoft XmlHttpRequest がキャッシュ制御ディレクティブを尊重するようにする方法

MSXML のXmlHttpRequestオブジェクトを使用してリクエストを発行しています。

そしてsend成功し、xml データを取得します。

XmlHttpRequestそれが実際にネットワークにヒットしなかったことを除いて(実際のhttpリクエストが発行されていないことがわかります)。また、Process Monitor は、ファイルが実際にキャッシュから提供されていることを示しています。

ここに画像の説明を入力

XmlHttpRequestしたがって、キャッシュされたコンテンツが 0 秒よりも古いものは古すぎることをユーザー エージェントに指示したいと思います。これを行う標準的な方法は、リクエスト ヘッダーを追加することです。

送信リクエストに:

そしてsend成功し、xml データを取得します。

XmlHttpRequestそれが実際にネットワークにヒットしなかったことを除いて(実際のhttpリクエストが発行されていないことがわかります)。また、Process Monitor は、ファイルが実際にキャッシュから提供されていることを示しています。

では、何が問題なのですか?max-age私が思っていることをしていませんか?

RFC 2616 - ハイパーテキスト転送プロトコル、パート 14: ヘッダー フィールドの定義から:

他のディレクティブを使用すると、ユーザー エージェントは基本的な有効期限メカニズムを変更できます。これらのディレクティブは、リクエストで指定できます:

max-age
クライアントが、経過時間が指定された時間 (秒) を超えない応答を受け入れる意思があることを示します。max-stale ディレクティブも含まれていない限り、クライアントは古い応答を受け入れません。

まさに私が欲しいもの。

Cache-Control: max-age=0まさに私が望むものではありませんか、それとも MSXML のオブジェクトにXmlHttpRequestバグがありますか?

アップデートワン

これは MSXML XmlHttpRequestCOM オブジェクトです。

  • CLSID: {88d96a0a-f192-11d4-a65f-0040963251e5}
  • プログラム ID: Msxml2.XMLHTTP.6.0

アップデート 2

ディレクティブは、max-ageすべてのキャッシュが準拠するようにクライアントによって追加されます。RFC から:

Cache-Control general-header フィールドは 、要求/応答チェーンに沿ったすべてのキャッシング メカニズムが従わなければならないディレクティブを指定するために使用されます。ディレクティブは、キャッシュがリクエストまたはレスポンスに悪影響を与えるのを防ぐための動作を指定します。これらのディレクティブは通常、デフォルトのキャッシュ アルゴリズムをオーバーライドします。キャッシュ ディレクティブは、要求にディレクティブが存在しても、同じディレクティブが応答で与えられることを意味しないという点で一方向です。

max-age はサーバー用ではありません。サーバーにとっては意味がありません。これは、ユーザーとサーバーのすべてのキャッシュ システムを対象としています。

アップデート 3

W3C XmlHttpRequestから:

ユーザー エージェントが HTTP キャッシュを実装する場合は、によって設定された要求ヘッダーを尊重 する必要があります(たとえば、 キャッシュをバイパスします)。エンド ユーザーがそのような動作を明示的に要求しない限り (たとえば、ページをリロードするなど)、ヘッダーを自動的に送信 または要求してはなりません。Cache-ControlsetRequestHeader()Cache-Control: no-cacheCache-ControlPragma

彼らのno-cacheに従って、ディレクティブを使用してみました:

また、XmlHttpRequestクライアントは、サーバーにまったくクエリを実行せずに、キャッシュから完全にリクエストを処理します。

W3C は、キャッシュが存在する場合、Cache-Controlそれが設定されているかどうかを尊重する必要があると述べていsetRequestHeaderます。Microsoft の XmlHttpRequest は、その要件を尊重していないようです。

0 投票する
1 に答える
752 参照

c# - ページ レベルのキャッシュを無効にする ASP.NET の問題/危険性

基本的に、キャッシュを無効にする理由は、DevExpress ASPxGridViews を使用しているためです。これは、フィルタリング、並べ替えなどに最適ですが、クライアントは大量のデータを処理しており、ページ ナビゲーション間でフィルター/並べ替えを保存するように要求しています。

これは、発生するイベント ClientLayout を介して行われます。問題は、ユーザーが別のページに移動してブラウザーの [戻る] ボタンをクリックすると、イベントが発生せず、フィルター処理されていないグリッドが表示されることです。これはおそらくキャッシュされたものであるためです。(ただし、グリッドのページに戻るリンクにより、ページが適切に読み込まれ、イベントが発生します。)

この問題を解決できた唯一の方法は、次のリンクで指摘されているようにキャッシュを無効にすることです: http://forums.asp.net/p/1304752/2563283.aspx

明らかに、私ができるからといって、それが良い考えであるとは限りません。パフォーマンスに少し影響する可能性があることは理解していますが、他に発生する可能性のある問題について誰か教えてもらえますか? AJAX の問題またはコントロールが予期しない動作を引き起こしている可能性がありますか?

0 投票する
2 に答える
44 参照

php - drupalで頻繁に変更されないデータ-それを正しく行う方法は?

フォームを取得し(formapiとdrupal_Getformを使用)、50個のフィールドを持つフォームを取得しました。そのうちのいくつかは、趣味、生年月日、都市/国などのデータを頻繁に変更することはありません...現在、配列でそれらだけを実行していますファイルに入れて#options => $ arrayに入れます...これがリソースを節約する最も速い方法ですか?または、taxonomy / variable_set / database query / block / nodeなどを使用する必要がありますか?

0 投票する
2 に答える
3963 参照

php - Zend-セッションテーブルでcache(MetaData)を有効にする方法は?

Zend_Session_SaveHandler_DbTableを使用して、セッションをテーブルに保存しています

私のプロファイラーは、各ページのリクエストでzendが行うことを教えてくれます:

#クエリ時間

(1)接続0.0032038688659668

(2)DESCRIBE session 0.0041539669036865

(3)SELECT session。* FROM sessionWHERE(((sessionsession_id= '7nnan8ltd6h64sigs6dlkicvh0'AND sessionsave_path=''AND sessionname='PHPSESSID')))0.00057697296142578

合計時間:0.008秒

他のテーブルでクエリを実行する場合、zendはそれらを1回(そのテーブルに初めてアクセスするときに)DESCRIBEします。次に、ページを更新すると、Describeなしでクエリのみが実行され、セッションテーブルではすべてのページでDESCRIBEが実行されます(認証を使用する...)

セッションテーブルのメタデータのみをキャッシュするにはどうすればよいですか?

私は現在これを使用しています

これは私の設定ファイルです

これは私のセッションテーブルです

ありがとう

0 投票する
0 に答える
81 参照

cache-control - キャッシュの問題 - 問題のあるサーバーを特定する方法

こんにちは、既存のウェブサイトを置き換えます。ページへの URL の 1 つが、たまたま古いサイトの URL の 1 つと一致します。この URL にアクセスしようとすると、古いコンテンツが表示されます。この古いサイトのコピーがどこから来ているのかをデバッグすることは可能ですか? WebベースのプロキシとAndroidで同じコンテンツを取得するため、私とホストの間のサーバーであることはすでに確認しています。

また、キャッシュを更新するにはどうすればよいですか?

ホストは Webfusion で、ドメインは 123reg です。

0 投票する
1 に答える
1355 参照

ajax - AJAXリクエストの.htaccesキャッシュ制御

私のウェブサイトには、ユーザーがボタンをクリックしたときにAJAX GETリクエストを行うページがあります。たとえば、取得するURLは次のようになります。

これらの2つの値で返されるgetData.php値は(少なくとも数か月は)変更されないので、.htaccessファイルにキャッシュ制御を実装して、ブラウザに特定の時間結果をキャッシュするように指示するにはどうすればよいですか?

たとえば、次の方法でjsファイルとcssファイルをキャッシュするようにブラウザに指示します。

^これにより、cache-controlヘッダーが30日間設定されます。

どんな助けでも大歓迎です。

ありがとう

0 投票する
1 に答える
896 参照

flash - ActionScript - ビットマップ キャッシュとイメージ アセットのパフォーマンス

1440 のベクトル三角形、または必要に応じてスライスで構成されるフル スペクトル カラー ホイール スプライト オブジェクトを作成しました。

カラー ホイールをアニメートしたいので、表示オブジェクトの cacheAsBitmap プロパティを有効にしました。ただし、ベクターをビットマップとしてキャッシュしても、アニメーション中のパフォーマンスは向上しません。アニメーションは遅く、不安定なままです。

カラー ホイールの PNG スクリーンショットを可逆圧縮でライブラリにインポートし、それをスプライトに変換し、この新しい画像アセットを回転させると、アニメーション中に優れたパフォーマンスが発揮されます。

圧縮されていない PNG 画像アセットのインポートが、cacheAsBitmap プロパティが true に設定された同じベクター画像を実行するのはなぜですか?

0 投票する
3 に答える
18860 参照

safari - Safari 5 で戻るボタンのキャッシュを防止する

最近、safari 5 がリリースされましたが、私の Web サイトで問題が発生することが判明しました。私は従来の ASP を実行している動的な Web サイトを持っていますが (それはあまり重要ではありません)、そのサイトでは履歴スタックをクリエイティブに使用しています。たとえば、製品を一覧表示するページにいて、製品の詳細に移動して製品を変更できます (管理者ビュー)。製品で [保存] をクリックすると、情報が AJAX 経由でサーバーに送信され、history.back()発行されます。これはすべてのブラウザー (safari <= 4 を含む) でうまく機能しますが、新しくリリースされた safari 5 では機能しなくなりました。Safari 5 でクリックして戻ると、実際にはページが更新されず、キャッシュからのみ読み込まれるようです。つまり、詳細ビューで行われた変更は表示されません。Safari 5でもこれを機能させるにはどうすればよいですか? これは、キャッシュをオフにする必要がある現在のコードです (すべてのページの上部に含まれています)。

0 投票する
2 に答える
894 参照

ruby-on-rails-3 - キャッシュを制御するためにRails 3でアセットIDを生成する方法は?

Rails では、静的ファイルを提供するときasset IDに、URL に追加されたを取得します。

このように、ファイルのタイムスタンプが変更され、ブラウザーが新しいファイルを自動的に要求すると、静的ファイルの URL が変更されます。

stylesheet_link_tag---と---静的アセットを含めるためのヘルパー メソッドを使用するjavascript_include_tagと、image_tagRails はこれらのファイルへのすべての参照にタイムスタンプを自動的に追加することがわかりました。

ファイルなどのヘルパーメソッド
持たない他のアセットに同様のものを実装するにはどうすればよいですか?.swf

(再ダウンロードを強制するこの「戦略」には名前がありますか? もしそうなら、それは何と呼ばれますか? )