UPDATE
Я немного больше изучил проблему, и вы можете найти более подробный ответ в моем недавнем посте
Обратите внимание, что решение, описанное ниже (изначально), не является кросс-браузерным решением.
Не уверен, поможет ли это, но вы можете попробовать следующий трюк:
1. Добавьте какой-нибудь ресурс на свою страницу, скажем, это будет файл javascript cachedetect.js
.
2. Сервер должен генерировать cachedetect.js
каждый раз, когда кто-то запрашивает его. И в ответ он должен содержать связанные с кешем заголовки, т. Е. Если кеш браузера включен, ресурс должен кэшироваться в течение длительного времени. Каждый cachedetect.js
должен выглядеть так:
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();
После этого вы можете просто проверить cacheEnabled === true
или cacheEnabled === false
через некоторое время.