ローカルキャッシュから応答が返されたときを検出する方法があるのでしょうか?出来ますか?XHRがキャッシュされたリソースを返すときを検出する方法?
ソリューションは一般的で無条件要求に対応する必要があります。この場合、応答コードは常に200 OKですが、XHRは2番目のリクエストのキャッシュされたリソースを返します(たとえば、最初のレスポンスにはExpiresヘッダーが含まれているため、有効期限前にサーバーに新しいリソースを問い合わせる必要はありません)。
ローカルキャッシュから応答が返されたときを検出する方法があるのでしょうか?出来ますか?XHRがキャッシュされたリソースを返すときを検出する方法?
ソリューションは一般的で無条件要求に対応する必要があります。この場合、応答コードは常に200 OKですが、XHRは2番目のリクエストのキャッシュされたリソースを返します(たとえば、最初のレスポンスにはExpiresヘッダーが含まれているため、有効期限前にサーバーに新しいリソースを問い合わせる必要はありません)。
は、答えは日付ヘッダが送信日前である場合、レスポンスがキャッシュから来ているDateヘッダ
キャッシュから
これはもちろん、Chrome拡張機能でのみ動作します。 –
@RichBradshaw私は一般的な解決策を見つけました。答えが更新されます。 – filip26
返されるステータスコードがonreadystatechange関数で304(変更されていない)かどうかを確認してください。線に沿って何か:
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==304)
{
alert("Cached");
}
}
@ kmb385ありがとうございますが、このソリューションは条件付きリクエストの場合にのみ機能します(If - *、If-Modified-Since、If-None-Matchなど)と私は一般的な解決策を探しています。質問が更新されました。 – filip26
ですResource Timing APIを使用して、ブラウザのキャッシュから何かが提供されたかどうかを判断することもできます。 transferSizeが0の場合(encodedBodySizeが> 0の場合)、キャッシュヒットになります。
あなたがa browser that supports itを扱っている限り、それは他のものより良い解決策のようです。
参照:https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize
発音できません。どのように応答にタイムスタンプを追加するのですか? –
わかりませんが、Chromeデベロッパーツールで情報を表示できます。 (Firebug for FF、レスポンスヘッダー:キャッシュから) – filip26