問題タブ [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.
browser-cache - ブラウザは、有効期限ヘッダー、キャッシュ制御ヘッダー、last-modified-headerでどのように機能しますか?
私はWeb開発者であり、PHPと.NETの両方を使用しています。Webでの作業に1年以上の経験があり、ブラウザのキャッシュ機能を完全に理解することはできませんでした。ここのWebGurusが私を助けてくれることを願っています。私が頭に浮かぶ質問は次のとおりです。
- ブラウザは実際にどのようにデータをキャッシュしますか、キャッシュされたファイルがサーバー上で変更されたかどうかを確認するように要求しますか?
- 開発者がブラウザのキャッシュを最大限に活用するだけでなく、まったく面倒なことなくサイトに新しい変更をプッシュできるようにするための理想的な方法は何ですか。ブラウザがどういうわけか私のCSSとJSと画像をキャッシュし、サーバーへの変更を毎回チェックするだけなら、これで問題を解決できると思います。しかし、私はそれを行う方法がわかりません。
html - ウェブサイトのファイル キャッシング?
css、html、js などの特定のファイルを.htaccess設定でキャッシュするのに望ましい期間と、ファイルの種類ごとに異なる時間設定が必要な理由を知りたいです。
いくつかの例では、誰かが html を 10 分間、js を 1 か月、画像を 1 年間キャッシュしていることがわかりました。
php - PHPのfopen()にWebページの現在のバージョンを返すように強制するにはどうすればよいですか?
このGoogleドキュメントページの現在のコンテンツは次のとおりです。
代替テキストhttp://www.deviantsart.com/upload/i9k01q.png
ただし、次のPHP fopen()スクリプトを使用してこのページを読むと、古いキャッシュバージョンが表示されます。
(出典:deviantsart.com)
この質問で提案された2つの解決策(ランダム属性とPOSTの使用)を試し、clearstatcache()も試しましたが、常にキャッシュされたバージョンのWebページを取得します。
fopen()がWebページの現在のバージョンを返すように、次のスクリプトで何を変更する必要がありますか?
追加:$optsと$contextを削除すると、キャッシュされたページも表示されます。
追加: Firefoxユーザーエージェントを送信するこのcurlスクリプトは、キャッシュされたバージョンも返します。
.htaccess - キャッシュ制御と有効期限が機能しない
キャッシュ制御を設定し、.htaccess を介してヘッダーを期限切れにしますが、既にブラウザーのキャッシュから読み込まれません。URI を入力すると、Web サイトからのロードを待っています。
URI: http://www.btgmaslak.com/static/images/main_container_background_11.jpg
http - ブラウザが再度リクエストするのをやめるように、クライアント側でファイルをキャッシュするにはどうすればよいですか?
次の HTTP 応答ヘッダーを含む画像を送り返します。
私の理解では、ブラウザはこのファイルを 24 時間 (86,400 = 60 秒 * 60 分 * 24 時間) 要求することさえすべきではありません。
後続のリクエストで私が見ているのは、まだファイルを要求しているのに、「304 Not Modified」が返されているということです。これはいいのですが、そのリクエスト/レスポンスも削除したいです。
ブラウザがわざわざファイルを要求するのを防ぎ、ファイルが期限切れになるまでローカルキャッシュにあるファイルをやみくもに使用させるには、どのヘッダーが必要ですか?
ruby-on-rails - send_data を使用するときに Expires: ヘッダーを設定するにはどうすればよいですか
次のように send_data を使用するコントローラーにメソッドがあります。
expires_in を使用すると、ヘッダーは次のように送信されます。
私がやりたいのはExpires: (some exact date)
、ユーザーエージェントが再検証されないようにするようなヘッダーを追加することです。しかし、send_data でそのヘッダーを設定する方法がわかりません。
ハッシュで明示的に設定できると思いresponse.headers
ますが、確かにそのためのラッパー(または何か)が必要ですか?
http - ASP.NET:Web静的ファイルのリロードを強制する方法
ウェブページを作成するとき、クライアント/ブラウザは、画像、.css、.jsなどのファイルを更新するか、それともキャッシュから取得するかを決定します。
.aspxページの場合、決定するのはサーバーです。
もちろん、IISレベルで、またはいくつかのHttpModule手法を使用して、要求のヘッダーを変更して、ファイルをキャッシュするかどうか、およびキャッシュする期間をクライアントに通知できます。
今、私は.aspxが対応する.jsと連携するWebサイトを持っています。したがって、おそらく私は.aspxの要素にアクセスする.jsにいくつかのjQueryコードを持っています。その要素を.aspxから削除すると、.jsも適応します。ユーザーが私のページにアクセスすると、新しい.aspxを取得しますが、古い.jsを取得する可能性があり、面白い効果が得られます。
私のサイトはたくさんのスクリプトとたくさんの画像を使っています。パフォーマンス上の理由から、IISで、これらのファイルが「期限切れにならない」ように構成しました。
さて、ファイルは時々変更されます。ユーザーが更新ファイルを確実に入手できるようにしたいと思います。
最初は、ファイルの名前を変更することで自分自身を助けました。だから、私はSkriptV1.jsとSkriptV2.jsなどを持っていました。リポジトリの履歴が壊れており、参照とファイル名の両方を調整する必要があるため、これは最悪のオプションです。
ここで改善し、Skript.js?v = 1またはSkript.js?v=2を使用して参照のみを変更しました。これにより、クライアントはファイルを更新する必要があります。それはうまく機能しますが、それでも私は参照を適応させる必要があります。
さて、ここには次のようなさらなる改善があります:
したがって、「GetScriptLastModified」は次のように?v=パラメータを追加します。
したがって、レンダリングされた.js-Linkは、クライアントには次のようになります。
新しいバージョンをアップロードすると、リンクは毎回変更されます。変更すると、ユーザーはすぐに新しいスクリプトまたは画像を取得できます。
さて、2つの質問:a)これを達成するためのよりエレガントな方法はありますか?b)そうでない場合:サーバーのパフォーマンスオーバーヘッドがどれほど大きくなるかを誰かが推測していますか?1ページに50のバージョン管理された要素が簡単に存在する可能性があるため、1つの.aspxに対してGetScriptLastModifiedが50回呼び出されます。
議論を楽しみにしています:)
java - HTTP キャッシュ ヘッダーを機能させる方法
HTTP キャッシングに関する質問で誰か助けてくれませんか?
"Expires" および "Cache-Control:max-age" リクエスト ヘッダーを設定すると、ブラウザは max-age が経過するまで GET リクエストを送信しないと思いましたか?
私のサーバーは多くの条件付き GET リクエストを見ており、304 で応答します。ただし、可能であればこれらの条件付き GET を排除し、ブラウザがリソースの有効期限が切れたと判断した場合にのみリソースを要求するようにしたいと考えています。
Chrome の開発者ツールから取得した詳細は次のとおりです。
リクエスト ヘッダー:
応答ヘッダー:
Java コードのフィルターにキャッシュ ヘッダーを設定しました。コードは Oracle の OC4J で実行されています。
また、これを HTTPS 経由で実行したいと考えています。HTTPS でも同じヘッダーを使用できますか?
前もって感謝します。
.net - ASP.NET HttpCache を使用して Web サービスからのデータをバッファリングする
同じデータをデータベース テーブルに格納するのではなく、Web サービスからのデータをバッファリングするために HttpCache を使用すると、どのような問題が発生する可能性がありますか? サービスが一時的に利用できなくなったという仮定の状況で、その間にサーバーを再起動する必要があった場合、キャッシュを再設定する方法はありません。そのため、SqlServer セッション状態でできるようにキャッシュを永続化することは可能ですか?
HttpCache は Singleton パターンを使用して実装されていると読みました。これは、キャッシュから取得したオブジェクトを操作するときに Mutex を使用する必要があるということですか?
キャッシュが別のスレッド化されたプロセスによって一方で更新され、別のスレッドによって読み取られている場合はどうなりますか?
ありがとう。
internet-explorer - 更新されたキャッシュ制御ヘッダーを無視する IE
現在、画像のキャッシュを許可している Web サイトがありますが、キャッシュを許可しないという決定がありました。そこで、レスポンス ヘッダーに cache-control ヘッダーと Expires ヘッダーを追加しました。
ただし、IE は依然として画像に対して条件付きリクエストを送信し、サーバーは 304 レスポンスで応答することに気付きました。304 応答では、更新された cache-control ヘッダーと Expires ヘッダーが表示されますが、IE は引き続きキャッシュからの画像を使用します。ブラウザを何度更新したり開いたり閉じたりしても、キャッシュされた画像が引き続き使用されます。キャッシュ フォルダーをクリアして初めて、IE は最終的にキャッシュ コントロール ヘッダーをリッスンします。
誰かが IE でのこの動作を説明してくれるかどうか疑問に思っていました。これはIEの癖ですか、それともキャッシュ制御について何か理解していません。ありがとう、
注: Web サイトで画像のキャッシュが許可されていると述べたとき、これは Cache-control または Expire ヘッダーをまったく提供しないことによって行われました。ETag ヘッダーのみが使用されました。