ローカルキャッシュから応答が返されるのを検出する方法があるかどうか疑問に思っていますか?出来ますか?
解決策は一般的であり、無条件の要求に対して機能する必要があります。この場合、応答コードは常に200 OKですが、XHRは2番目の要求に対してキャッシュされたリソースを返します(たとえば、最初の応答にはExpiresヘッダーが含まれているため、有効期限が切れる前にサーバーに新しいリソースを要求する必要はありません)。
ローカルキャッシュから応答が返されるのを検出する方法があるかどうか疑問に思っていますか?出来ますか?
解決策は一般的であり、無条件の要求に対して機能する必要があります。この場合、応答コードは常に200 OKですが、XHRは2番目の要求に対してキャッシュされたリソースを返します(たとえば、最初の応答にはExpiresヘッダーが含まれているため、有効期限が切れる前にサーバーに新しいリソースを要求する必要はありません)。
答えは日付ヘッダーです
例えば
onreadystatechange関数で返されるステータスコードが304(変更されていない)であるかどうかを確認します。次のようなもの:
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==304)
{
alert("Cached");
}
}
どうやら、Resource Timing APIを使用して、ブラウザのキャッシュから何かが提供されたかどうかを判断することもできます。transferSizeが0(およびencodedBodySizeが> 0)の場合、それはキャッシュヒットです。
それをサポートするブラウザを扱っている限り、それは他のものよりも良い解決策のように思えます。
参照:https ://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/transferSize