Javascript - 缓存和cookie问题

时间:2015-04-08 22:11:44

标签: javascript php caching cookies

我在缓存页面上遇到了一个非常令人沮丧的JavaScript和Cookie问题。

我得到了以下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();
    }
使用PHP将

{{Lang}}替换为后端的相同cookie。

$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开发工具明确说明Cookie lang设置为&#34; EN&#34;,而不是&#34; FR&#34;

是否存在解决此缓存问题的方法?

2 个答案:

答案 0 :(得分:1)

reload方法接受一个指示强制缓存刷新的布尔标志。所以试试:

document.reload(true);

答案 1 :(得分:1)

JS中的不相等比较是!=,所以

getCookie("lang") != "FR"
相关问题