問題タブ [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.
http - ETag にメディア タイプを含める必要がありますか?
ETag を HTTP 応答に追加する場合、メディア タイプを含める必要がありますか? もちろん、ETag が不透明であることは理解していますが、以下に例を示します。
- application/json で Person を要求するクライアントがあるとします。それを調べて ETag を作成し、その人物の JSON 表現を送り返します
- ここで、同じクライアントが同じ URI で (変更されていない) 同じ人に別の要求を行いますが、それを application/xml で要求します。
単純に 304 を返すのは明らかに正しくありませんが、私の質問は、2 番目の要求で、ETag は一致するが、Accept ヘッダー (またはコンテンツ ヘッダー) に基づくキャッシュはないと予想するかということです。また、キャッシュに同じ URI からの 2 つの表現が含まれる可能性はありますか?それとも、Content-Type が切り替わるたびに常に無効なキャッシュを持つことになりますか?
caching - expires、max-age、shared max-age の違いは何ですか?
HTTP Cachingを使用したことがありません。
これらのキャッシング オプションはSymfony のドキュメント ページで見つけました。
expires
、max-age
、およびs-maxage
ヘッダーの違いを知りたかっただけですか?
javascript - スクリプトをキャッシュするChrome(および場合によっては他のブラウザ)には、
問題:
クライアントのウェブサイトで、サイトのページごとに異なるウィジェットをホストしています。
ウィジェットをレンダリングするために、クライアントはページにスクリプトタグを含めます。このスクリプトタグはサイトのすべてのページに読み込まれ、返されるコードはページによって異なります。
したがって、このスクリプトがキャッシュされると、最終的には間違ったページのウィジェットが提供されます。
現在、スクリプトを提供するときに、応答ヘッダーを設定します
それでも、ブラウザがスクリプトをキャッシュする場合があります。
質問:
httpヘッダーを使用してすべての場合にキャッシュを停止する方法はありますか、それともまったく異なるアプローチを取る必要がありますか?
アップデート:
topekが推奨するヘッダーは、スクリプトの非キャッシュ性を大幅に改善しました。ただし、[戻る]、[進む]、または[再読み込み]ボタンを使用すると、スクリプトは引き続きキャッシュされます(Chromeでは最もキャッシュに積極的と思われます)。実際に何かをクリックすると、サーバーから取得されます。
キャッシュを停止する唯一の確実な方法は、ページの読み込みごとに異なることが保証されているスクリプトソースを設定することであるようです(esilijaとtejsによって提案されています)。
java - Is there an HttpClient that handles caching requests on its own?
I have an app that needs to make repeated requests for content on the web. Now the server side implementation follows the standards for http caching using the headers. I was wondering if there is an extended version of HttpClient or another tool that will store responses and interact with the headers for automatic caching. If there isn't one that is fine, I would just like to skip implementing this if there is a tool already out there.
Thanks
php - HTTP キャッシング、ユーザー認証、および PHP
私は PHP でいくつかのソフトウェアに取り組んでおり、HTTP キャッシュを効果的に利用できるようにしようとしています。ただし、最近発生している問題の 1 つは、ログイン後、ログイン前にアクセスしたページがキャッシュされ、ログインしたように動作しないことです。
これは、PHP とクライアントの間に HTTP キャッシュがある場合に特に問題になります。キャッシュ リミッターを常に「パブリック」に設定すると、ページはおそらく常に (プロキシ キャッシュによっても) キャッシュされます。ログインしていないときはキャッシュ リミッターを「パブリック」に、ログインしているときは「プライベート」に設定すると、で、私が現在抱えている問題はおそらくまだ発生するでしょう。キャッシュ リミッターを常に非公開に設定すると、プロキシ キャッシュはまったく役に立たなくなり、現在抱えている問題はおそらく依然として発生します。
この問題の理想的な解決策は何ですか? ユーザーがログインした後、Web ブラウザーを「再試行」させる方法はありますか? プロキシ キャッシュの場合、受信 Cookie に基づいてキャッシュする方法があることはわかっているので、問題の一部を解決できると思います。しかし、Web ブラウザーの観点から見た問題はどうでしょうか。
html - キャッシュされた html ファイルのブラウザ html 更新をトリガーする方法は?
YSLOW の提案: 静的コンポーネントの場合: 遠い将来の Expires ヘッダーを設定して、「期限切れにならない」ポリシーを実装します.... 遠い将来の Expires ヘッダーを使用する場合は、コンポーネントが変更されるたびにコンポーネントのファイル名を変更する必要があります。ヤフーで!多くの場合、このステップをビルド プロセスの一部にしています。バージョン番号は、コンポーネントのファイル名に埋め込まれています (例: yahoo_2.0.6.js)。 http://developer.yahoo.com/performance/rules.html
ほとんど静的なページのキャッシュを利用して、バージョンが変更されたときに js ファイルをリロードしたいと思います。.js ファイルのバージョン # を設定しましたが、main.html ページの Expires が将来に設定されているため、リロードされず、js ファイルがリロードされません。理想的には、サイトの新しいバージョンがリリースされたときに、ブラウザーに (心霊術を使用して) main.html をリロードするように指示したいと考えています。main.html ページを常にリロードすることはできますが、キャッシュのメリットが失われます。これはユーザーに対して自動的に行われる必要があるため、ctrl-F5 の回答は探していません。
答えは次のとおりだと思います: main.html はキャッシュできませんが、この問題を解決するために他の人が何をしているのか知りたいです。キャッシングとリロードのメリットを最大限に活用するにはどうすればよいですか。
ありがとう。
ruby-on-rails-3 - Heroku & Rails - Varnish HTTP キャッシュが機能しない
私のheroku Webサイトのルートページは基本的に静的で、生成時にビューにいくつかのルビーコードがありますが、単一のユーザーに固有のものは何もないため、Varnishによってキャッシュされ、dynoにヒットすることなく提供されるようにしたいと思います(注)アプリケーションに動的なページが他にあることを確認します)。
ここでは、Heroku を使用すると非常にシンプルに見えます。追加するだけ response.headers['Cache-Control'] = 'public, max-age=300'
で、再生成する前に 5 分間キャッシュされます。
これをテストするために、ページに日付 ( ) を変更して出力し、Time.now
5 分間同じままかどうかを確認しましたが、新しいブラウザーでページにアクセスするたびに更新されます。同じブラウザで更新しても問題なく動作しますが、これは Heroku ではなく、ブラウザのキャッシュが原因だと思います。
HTTPヘッダーを取得するためにcurl -iを実行すると、次のようになります。
基本的に、一度生成されてから Varnish にキャッシュされていることを確認したいのですが、オプションが不足していませんか? さらに設定する必要がありますか? 高速な静的ページを提供するための提案が他にあれば、それも歓迎します。
ありがとう!
php - php キャッシュミス
コントロール パネル ユーザーには、アクセスするために秘密のコードが必要なページが 1 つあります。
これを行うための私のシーケンスは次のとおりです。
- アクセスしたいページをパラメータにして「シークレットコードリクエストページ」に移動します。
- シークレット コードを確認し、正しければ、セッション変数に「ハッシュされたページ名」を入力します。
- アクセスしたいページにリダイレクトします。
- このページは、この「ページ名」と一致するかどうか「ハッシュされたセッション」をチェックします
- 一致する場合はセッションをクリアしてページ全体を表示し、一致しない場合は最初のページにリダイレクトします。
問題は次のとおりです。ステップ 4 で、ページが最新のセッション更新を読み取ることがあります。値が表示されないこともありますが、多くの場合、正しい値が表示され、ページを更新しても、セッションには正しいハッシュ データが含まれています (ステップ 5 で、一致する場合は、セッション変数を既にクリアしています)。
mysql でデータ レコードを使用してセッション変数を変更しようとしましたが、同じ結果が得られました。phpmyadmin には既に設定されているレコードが表示されますが、ページにはデータ セットが表示されません。それ以外の場合、レコードが削除された後も、ページには以前のレコードの値が表示されます。
これはキャッシュに問題があるということですか?私はまた、次のようなキャッシュなしのヘッダーを実行しました:
それでも同じ結果が得られました。何か提案はありますか?
更新:ページを更新し続けると、おそらく3または5回更新した後、正しい値が表示されます。リアルタイムにする方法は?したがって、セッションが設定されている場合、ページは設定された値を直接確認でき、セッションがクリアされた場合、ページは秘密コードを尋ねます。
jquery - ServiceStack 304を無効にしますか?
jQuery.ajaxがIEでリクエストすると、ServiceStackは常に304を返し、サービスを実行しないIServiceがあります。ResponseFiltersを試し、RestServiceBaseに切り替えて、HttpResultを介して200を返しました。私は何が欠けていますか?
解決しました。
ServiceStackは正常に機能しています。ResponseFiltersを使用してCacheControl:no-cacheヘッダーを追加しようとしましたが、驚いたことに、304を取得し続けました。それから私は、Cache-Controlヘッダーのない元の応答がIEのキャッシュ、つまり304にあったためだと気づきました。IEのキャッシュをクリアすると、すべてが機能します:-)
html - HTML/ページをキャッシュしないようにIE6に指示する方法は?
PHPを使用して次のコードを使用しています。
すべてのブラウザで正常に動作しているようですが、IE6 では Ctrl+F5 を押してページを強制的に更新しない限り動作していません。IE6でキャッシュを停止するには?