Я получаю довольно неприятную проблему с JavaScript и Cookies на кэшированных страницах.Javascript - проблема с кешированием и печеньем
я получил следующий JS код:
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
if (!getCookie("lang") == "{{Lang}}"){
document.reload();
}
{{Lang}}
заменен с тем же куки на внутреннем интерфейсе с PHP.
$template = str_replace("{{Lang}}", $lang, $template);
Но это не имеет особого отношения, поскольку эта часть работает по назначению.
Проблема в том, что когда пользователь посещает кешированную страницу.
JS упоминалось ранее становится
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1);
if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
}
return "";
}
if (!getCookie("lang") == "FR"){
document.reload();
}
Вопрос заключается в том, что страница не обновляется, даже если инструменты Chrome Dev достаточно ясно говорят, что печенье lang
установлен на «EN», а не «FR».
Есть ли способ вокруг этой проблемы кеширования?
Почему вы считаете, что страница кэшируется? Вы проверили заголовки? – zerkms
@zerkms Поскольку он не выполняет новый PHP-код, который заставил меня прибегнуть к этому решению JS, которое, похоже, тоже не работает. Но я хочу, чтобы это решение работало из-за интереса к проблеме и способа ее решения в будущем. –
«Потому что он не выполняет новый PHP-код» --- откуда вы его знаете? Вы проверили журнал доступа к серверу? – zerkms