問題タブ [http-caching]
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.
webkit - max-ageヘッダーとLast-Modifiedヘッダーの両方が提供されている場合にWebkitがキャッシュされない
カスタムWebサーバーを使用してWebベースのアプリケーションを作成していますが、Webkitブラウザーが画像、スタイルシート、およびJavaScriptをキャッシュしないという問題があります。
Cache-Control:max-ageとLast-Modifiedの間の関係まで追跡しました。両方が指定されている場合、webkitはmax-ageヘッダーを無視し、リソースが使用されるたびにファイルが変更されているかどうかを確認しているようです。サイトの最初のページにiframeがあり、1秒以内にスタイルシートなどが2回要求されます。
Last-Modifiedを削除すると、ファイルは翌日まで再リクエストされません。ただし、翌日のリクエストはif-modified-sinceリクエストではなくなり、サーバーは304ヘッダーだけでなくすべてを再送信する必要があります。
IE9、Firefox 10.0、およびOpera 11.61では、ブラウザーは正しくキャッシュし、画像を再要求せず、Cache-Control:no-cacheヘッダー属性を持つHTMLのみを再要求します。
Chrome 16.0.912.77mおよびSafari5.1.2(7534.52.7)では、すべてのページのすべての画像に対して、毎回条件付きリクエストが行われます。サーバーは304ヘッダーで応答します。これもmax-age属性を含みますが、どちらも要求を続けます。
応答とともに送信するHTTPヘッダーの例は次のとおりです。
これらのブラウザがすべて私のキャッシュヘッダーを尊重するようにする方法について誰かが提案を持っていますか?
すべてのブラウザーはWin7Prox64で実行されており、上記のHTTPヘッダーはFiddlerの生の出力であるため、ブラウザーが受信しているのはまさにそれです。
注:これがヘッダーフィールド間の相互作用であることに気付く前に、前の質問をしました。前の質問は正確ではなくなったため、削除しました。
ありがとう
モグ
php - PHP で HTTP ファイルをキャッシュする
HTTP および HTTPS 経由でファイルを要求するライブラリを作成しています。頻繁に要求される URL へのトラフィックを減らすために、取得したファイルをキャッシュし、そのキャッシュ設定を尊重したいと考えています。
HTTP RFC ではキャッシュの有効期限が非常に多く定義されているため、考えられるすべての組み合わせでチェックする必要があるため、キャッシュの有効期限は難しいようです。
Expires
Cache-Control
(数十の可能な値)Pragma
これらすべてを正しく実装する PHP コードを誰かがすでに書いていると想像できます。それはどこにある?
caching - Https応答のキャッシュ
https応答をキャッシュする方法、認証されたURLの場合にキャッシュするのは本当に安全ですか。
http-headers - CDN にキャッシュするが、ブラウザにはキャッシュしない
現在、Akamai を CDN として使用していますが、ブラウザもコンテンツをキャッシュしていることに気付きました。ブラウザが images/css/js をキャッシュするのは素晴らしいことですが、ブラウザにキャッシュせずに Akamai にキャッシュする方法があるかどうか知りたいです。
今、私の原点から、次のようなヘッダーを送信します。
Akamai はこれらのヘッダーを尊重しますが、それらをユーザーに直接返します。これにより、ブラウザは実際にコンテンツもキャッシュします。
これはほとんどの場合うまく機能しますが、ユーザーがログインしている Cookie を持っている場合、CDN キャッシュをバイパスしてオリジンに直接アクセスする CDN ロジックもあります。
したがって、認証されていないユーザーが「ログイン」をクリックすると、ログイン プロセスに送られ、同じページに戻されます。CDN はオリジンからこのページをリクエストしますが、ブラウザは実際には同じページを再度リクエストし、ログインが機能していないように見えます。
これで、ログイン プロセスで ?l=1 などのクエリ パラメータを追加するように強制できますが、もっと良い方法が必要です。
Akamai が Cache-Control ヘッダーをハードコードされたキャッシュなしの値に上書きできるかどうかを確認したいのですが、元からこれを行う方法があるかどうか疑問に思っています。
ありがとう!
http-headers - 複数のページで同じスクリプトのキャッシュを期限切れにする
サイトの複数のページで使用されるスクリプトがあります。ブラウザがそれをキャッシュし、毎回ダウンロードされないように、Expires ヘッダーを設定したいと考えています。それは問題ありません。その方法は理解していますが、ブラウザの仕組みがよくわかりません。
ブラウザはそのパスに従ってそれをキャッシュしますか?そして、スクリプトを要求するページがキャッシュされたバージョンを使用する必要があることを知るのに十分スマートですか?それとも、スクリプトとページの間に関連付けがあり、したがってそれぞれに対してキャッシュする必要がありますか?ページ?
caching - AppCache (Symfony2) で最初の応答が非公開になっていれば問題ありませんか?
httpキャッシングを使用しようとしています。私のコントローラーでは、次のように応答を設定しています。
開発モード
開発環境では、最初の応答は次のヘッダーを持つ 200 です。
次の 2 分間、すべての応答は次のヘッダーを持つ 304 です。
これは基本的に私が期待していることです。
製品モード
prod モードの応答ヘッダーは異なります。app.php では、AppCache でカーネルをラップしていることに注意してください。
最初の応答は、次のヘッダーを持つ 200 です。
したがって、これはプライベートなキャッシュなしの応答です。
次のすべてのリクエストは、私が期待するものとほぼ同じです。次のヘッダーを持つ 304:
私はそれについて心配する必要がありますか?それは期待される動作ですか?
その前に Varnish または Akamai サーバーを配置するとどうなりますか?
少しデバッグを行ったところ、最後に変更されたヘッダーのために応答がプライベートであることがわかりました。HttpCache カーネルは EsiResponseCacheStrategyを使用して、キャッシュされた応答を更新します ( HttpCache::handle()メソッド)。
EsiResponseCacheStrategyは、 Last-Response または ETag ( EsiResponseCacheStrategy::add()メソッド)を使用する場合、応答をキャッシュ不可にします。
Response::isValidateable()は、Last-Response または ETag ヘッダーが存在する場合に true を返します。
その結果、Cache-Control ヘッダーが上書きされます( EsiResponseCacheStrategy::update()メソッド)。
Symfony2 ユーザー グループでこの質問をしましたが、今のところ回答がありません: https://groups.google.com/d/topic/symfony2/6lpln11POq8/discussion
アップデート。
元のコードにアクセスできなくなったので、最新の Symfony standard edition でシナリオを再現しようとしました。
応答ヘッダーはより一貫したものになりましたが、それでも間違っているようです。
応答にヘッダーを設定するとすぐにLast-Modified
、ブラウザーによって作成された最初の応答には次のようになります。
2 番目の応答には次のものが期待されます。
If-Modified-Since
ヘッダーを送信しないと、すべてのリクエストが返されますmust-revalidate, no-cache, private
。
リクエストがどの環境で行われたprod
かは関係ありません。dev
caching - 静的ファイルのバージョン管理とキャッシュ: CSS、JS、画像 -- 考慮すべきこと
(エンタープライズ) Web プロジェクトの場合、以前のバージョンの静的ファイルを保持して、プロジェクトがいつ設計変更を実装する準備ができたかを自分で決定できるようにしたいと考えています。私の最初の計画は、次のような静的コンテンツ用のフォルダーを提供することです。
これらのフォルダ内の各ファイルには、少なくとも 1 年間、「永久に」キャッシュするキャッシュ ポリシーが必要です。また、リクエスト数を最小限に抑えるために、css ファイルと js ファイルを 1 つに連結する予定です。
次に、フォルダーも提供しcurrent
ます(最新のリリースバージョンにシンボリックリンクします)
これにより、私の最初の問題 (プロジェクトとサブ Web サイトがコードを特定のバージョンにロックし、準備ができたらいつでもアップグレードできる) が解決されます。
しかし、その後、キャッシングの問題がいくつか見られます。current
リリースごとに変更されるため、キャッシュフォルダーを「ただ」することはできません。そのフォルダのキャッシング ポリシーはどうあるべきですか。
また、リリースごとに、ほとんどの静的ファイルが変更されることはありません。それらを永久にキャッシュし、変更がある場合は名前を変更することは適切ですか?
キャッシュとファイルの変更の間の最善のトレードオフについて知りたいので、ここでアドバイスを探しています。
symfony - Symfony 2 のエッジ サイド インクルードと検証キャッシュ
Symfony 2 の ESI で検証キャッシュを使用することは可能ですか?
HttpFoundation Responseクラスを見ると、 isNotModified がどのように機能するかがわかります。
問題は、ESI $request->headers->get('If-Modified-Since'); です。$request->getEtags() は ESI で何も返さないため、キャッシュは決して新鮮ではありません!
$request の解決策はありますか?
検証 HTTP キャッシュが ESI で機能しない場合、部分をキャッシュする別の方法はありますか?
ありがとうございました !
jekyll - Jekyll Bootstrap ベースのブログ - 期限切れヘッダー?
Github ページでホストされている Jekyll ブートストラップ ベースのブログがあります。
私の問題: Web ページで何かを変更するたびに、強制的にページをリロード (CTRL + R) して変更を確認する必要があります。
Jekyll または私のブラウザは、送信できる新しいバージョンがあることを認識していないようです。
これをより適切に処理するように Jekyll を構成するにはどうすればよいですか?
caching - Squidに高負荷で接続をバイパスさせる方法
物理メモリが限られているシステムでSquidを実行したいと思います。システムは理想的にはページスワッピングを行わないはずです。AFAIK、これを達成するための2つの方法があります。
からのトリガーと組み合わせて
storeDigestAddable()
(ファイル内の)ルーチンを変更して、ファイルのキャッシュを停止します。この場合、squidは正常に機能を低下させて単なるプロキシになり、キャッシュを実行しません。これにより、メモリ内の大きなファイルのキャッシュによって引き起こされるメモリの肥大化から私たちを救うことができます。store_digest.c
sbrk()
からのトリガーと組み合わせて新しい接続をバイパスし
sbrk()
ます。
これらは両方とも、Squidコードを変更する必要があります。この問題に遭遇/熟考しましたか?他の方法でこの目標(スワッピングや物理メモリの制限なし)を達成する方法はありますか?役立つ可能性のあるSquid構成パラメーターを教えていただければ幸いです。