問題タブ [http-status-code-304]
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.
php - PHPで生成されたjavascriptファイルの304応答を取得するにはどうすればよいですか?
私は次のPHPファイルを持っています:
つまり、これは.phpファイルですが、JavaScriptファイルとして解釈されます。私はそれを次のようなWebページにロードします:
私の質問は、このファイルにアクセスするときに送信されるHTTPコードに関するものです。このファイルをリクエストするたびに(直接またはリクエストしているウェブページを介して)、ChromeDevToolsのステータスは200OKと表示されます。内容が変更されていなくても、304になることはありません。
コンテンツが変更されていない場合、このような動的に生成されたファイルに対して304 Not Modifiedを取得することは可能ですか?そうでない場合、なぜですか?
私はまた、次のようなルートを可能にするいくつかのPHPフレームワークを使用しました/js/myjavascript.js
。したがって、上記のコードをそのルートに配置して、同じ方法でJavaScriptを動的に生成できます。ただし、コンテンツが変更されておらず、URIが.jsファイルである場合でも、毎回200のままです。
これに対する解決策はありますか?私の状況では、このjavascript/phpファイルの内容は約1日に1回変更されます。そのため、ほとんどの場合、訪問者のブラウザでファイルをキャッシュする必要があります(304未変更)が、変更された場合は、新しいバージョン(200 OK)をダウンロードしてキャッシュするために訪問者のブラウザが必要です。
javascript - ページに既に読み込まれている画像が再度読み込まれるのはなぜですか?
を使用して、dom 内の画像の src を削除して置き換えています
これをオンロードイベントで使用しようとしています。imgURL がまだページに読み込まれていない場合にのみ、読み込みイベントがトリガーされると予想していました。
代わりに、load イベントがトリガーされることがあります。クロムネットワークタブで、画像が 304 Not Modified ステータスで返されていることがわかります。
この問題を回避する方法は知っていますが、これが正常かどうかについて知りたいだけです。
この質問を表現する最良の方法は、ページに一度読み込まれた画像をブラウザが再度読み込もうとする原因は何だと思いますか? キャッシュキラーが配置されていますが、画像を再度表示する前に更新されていません。
browser-cache - ブラウザが同じコンテンツ (PNG 画像) のリクエストを複数回送信している
Apacheサーバーでホストされているicons.pngという名前のPNGファイルがあります。基本的に、このファイルは他の小さな画像要素 ( CSS スプライト) の組み合わせです。このファイルは、ページが初めて読み込まれるときに、通常の200 OK応答で読み込まれます。
ページが読み込まれた後。カスタムツールチップがトリガーされるリンクがいくつかあります。このツールチップには、icons.pngファイルの画像の一部が、いくつかの HTML 要素の背景画像として表示されます。
たとえば、HTML コードは次のようになります。
jQuery(".profile").tipTip({delay: 200, defaultPosition: "top", content: "<a href='#' style='width: 32px; height: 32px; display: block;
背景: url(images/icons.png) no-repeat -200px -64px'></a>"});
[ icons.pngが参照されているHTML ファイルの他の場所がいくつかあります]
リンクにカーソルを合わせるたびに、ツールチップが表示されますが、同時にブラウザーは、 icons.pngファイルの HTTP 要求をサーバーに送信しています。そして、サーバーからの応答コードは304 Not Modifiedとして来ています。
ファイルのコンテンツはフェッチされていませんが、ヘッダーを送信するオーバーヘッド (約 166 バイト) が毎回存在するため、1.5 秒の遅延が発生しています(私は非常に遅い接続を使用しています)。この 1.5 秒間、ツールチップ要素には背景画像がなく、突然画像がどこからともなく表示されます。
ここにいくつかのスクリーンショットがあります
- Chrome ネットワーク パネル:
- Firebug ネットパネル:
- HTTP ヘッダー:
私が知る限り、リソースがフェッチされると、ブラウザはそれをキャッシュに保持し、サーバーに複数回リクエストするのではなく、必要に応じてそこからフェッチする必要があります。
サーバーがコンテンツとともに「 Expires」または「Cache-Control 」ヘッダーを送信していないことがわかりました。これが Chrome のこのような例外的な動作の背後にある理由であるかどうかはわかりません。どんな提案でも大歓迎です。
PS: アプリケーションはHerokuの共有ホスティング環境でホストされています。Ubuntu 12.04 x86_64 で Firefox 15.0 と Chrome バージョン 21.0.1180.89 を使用しています。
php - Jquery 304 Not Modified 問題
WAMP サーバーで jquery、php、jquerymobile を使用してアプリケーションを構築しています。別のページに戻り、関数に基づいて関数を起動する必要がある場所に戻るまで、アプリ内のすべてが正常に機能しpageinit
ます。起動していないように見えるため、ページは空白で、json データはページに挿入されません。firebug でイベントを確認したところ、コンソールでページに 304 Not Modified エラーが表示されていることがわかりました。これはキャッシュに関係していると読みました。キャッシュ値が false に設定されている ajax リクエスト内でも、これが発生しないようにするにはどうすればよいですか。
php - 304 Not Modified ヘッダーを付けて ETag を再度送信する必要がありますか?
奇妙なことが起こったとき、私はETags、IF_NONE_MATCHなどを使用してPHPで遊んでいました。IF_NONE_MATCH をチェックする以下のコードを書きました。ETag と一致する場合は、304 応答ヘッダーを送信します。そうでない場合は、ブラウザーにページをキャッシュするように指示する他のヘッダーと、ETag を送信します。私はページを一度取得すると、常に 304 を取得することを期待していました。代わりに、ページを 1 回取得し、次に 304、次にページ、304 などを取得しています。Chrome のヘッダー ビューを確認すると、304 コードで ETag を再度設定していなければ、そうではないことがわかりました。次にページを取得したときに、リクエストヘッダーでそれを送り返します。これは通常の動作ですか、それとも Chrome だけですか? 私は何か間違ったことをしていますか?
コードは次のとおりです。
caching - maxage ヘッダーの使用時に 304 応答を返すことはできません
静的コンテンツをキャッシュしようとしています。このコンテンツの有効期間は 1 時間で、コンテンツは公開されています。これは誰にとっても同じです。
コントローラーに次のコードがあります。
しかし、isNotModified()
関数は常に false を返します。
PS: Symfony 2.0.22 を使用しています