UPDATE
zrobiłem trochę więcej dochodzenia problemu i można znaleźć bardziej szczegółowe answer in my recent post pamiętać, że rozwiązanie opisane poniżej (początkowo) nie jest rozwiązaniem krzyż przeglądarki.
Nie jestem pewien, czy to pomaga, ale możesz spróbować następującej sztuczki: 1. Dodaj trochę strony do zasobu, załóżmy, że będzie to plik javascript cachedetect.js
. 2. Serwer powinien generować cachedetect.js
za każdym razem, gdy ktoś o to poprosi. W odpowiedzi powinien zawierać nagłówki związane z pamięcią podręczną, tzn. Jeśli pamięć podręczna przeglądarki jest włączona, zasób powinien być buforowany przez długi czas. Każdy cachedetect.js
powinna wyglądać następująco:
var version = [incrementally generated number here];
var cacheEnabled; //will contain the result of our check
var cloneCallback;//function which will compare versions from two javascript files
function isCacheEnabled(){
if(!window.cloneCallback){
var currentVersion = version;//cache current version of the file
// request the same cachedetect.js by adding <script> tag dynamically to <header>
var head = document.getElementsByTagName("head")[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "cachedetect.js";
// newly loaded cachedetect.js will execute the same function isCacheEnabled, so we need to prevent it from loading the script for third time by checking for cloneCallback existence
cloneCallback = function(){
// once file will be loaded, version variable will contain different from currentVersion value in case when cache is disabled
window.cacheEnabled = currentVersion == window.version;
};
head.appendChild(script);
} else {
window.cloneCallback();
}
}
isCacheEnabled();
Po tym można po prostu sprawdzić cacheEnabled === true
lub cacheEnabled === false
po pewnym okresie czasu.
Co masz na myśli mówiąc "przeglądarka jest zoptymalizowana do buforowania"? Czy obsługuje etag lub jakiś konkretny nagłówek pamięci podręcznej? –
Możesz wyłączyć przechowywanie plików statycznych w ustawieniach przeglądarki. Czy istnieje sposób sprawdzenia, czy ta pamięć jest wyłączona? – gaffleck