为 Internet Explorer 8 禁用 jQuery 中的缓存问题

Posted

技术标签:

【中文标题】为 Internet Explorer 8 禁用 jQuery 中的缓存问题【英文标题】:Disable caching issue in jQuery for Internet Explorer 8 【发布时间】:2013-11-15 07:24:57 【问题描述】:

我无法查看新的搜索结果,因为它们已在数据库中更新。仅使用 Internet Explorer 8。我尝试刷新页面,但没有任何效果。 Chrome 和 Firefox 运行良好。

我可以通过选择“检查存储页面的新版本:每次访问网页”来临时解决此问题。但是,当我将它投入生产时,这意味着它不适用于使用 IE 8 9 或 10 的最终用户。

感谢任何有用的提示。提前致谢。

这是我已经尝试过的:

<script> type=“text/javascript" src="js/jquery-1.9.1.min.js?new=yes"></script>

$(document).ready(function () 
    //http://***.com/questions/217957/how-to-print-debug-messages-in-the-google-chrome-javascript-console/2757552#2757552
    if (!window.console) console = ;
    console.log = console.log || function () ;
    console.dir = console.dir || function () ;

    //listen for keyup on the field

    $("#searchField").keyup(function () 
        //get and trim the value
        var field = $(this).val();

        field = $.trim(field)

        //if blank, nuke results and leave early

        if (field == "") 
            $("#results").html("");

            return;
        

        console.log("searching for " + field);

        $.getJSON("cfc/test.cfc?returnformat=json&method=search", 
            "search": field
        , function (res, code) 

            var s = "<table width='1000' class='gridtable' name='table1' border='1'><tr><th width='40'>Attuid</th><th width='80'>Device</th><th width='55'>Region</th><th width='140'>Problem</th><th width='160'>Description</th><th width='120'>Resolution</th> <th width='180'>Resolution Description</th><th width='40'>Agent</th><th width='140'>Timestamp</th></tr>";

            s += "";

            for (var i = 0; i < res.table_demo.length; i++) 
                s += "<tr><td width='42'>" + res.table_demo[i].pa_uid +
                    "</td><td width='80'>" + res.table_demo[i].pa_device +
                    "</td><td width='55'>" + res.table_demo[i].pa_region +
                    "</td><td width='140'> " + res.table_demo[i].pa_problem +
                    "</td><td width='160'> " + res.table_demo[i].pa_description +
                    "</td><td width='120'>" + res.table_demo[i].pa_resolution +
                    "</td><td width='180'>" + res.table_demo[i].pa_rdescription +
                    "</td><td width='42'> " + res.table_demo[i].pa_agent +
                    "</td><td width='140'> TimeStamp"
                "</td>";

                s += "</tr>";
            

            s += "</table>";

            $("#results").html(s);
        );
    );
)

【问题讨论】:

通过 ajaxSetup 禁用缓存,或者改用 $.ajax(首选)。 您是否查看过 HTTP 缓存标头? mobify.com/blog/beginners-guide-to-http-cache-headers 它可能只是一个剪切和粘贴错误,但这看起来不正确:&lt;script&gt; type=“text/javascript" src="js/jquery-1.9.1.min.js?new=yes"&gt;&lt;/script&gt; 【参考方案1】:

尝试$.ajaxSetup( cache: false ); 禁用 jQuery 缓存。

还要让页面立即过期,请尝试添加元标记:

<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="-1" />

【讨论】:

以上是关于为 Internet Explorer 8 禁用 jQuery 中的缓存问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 或 php 禁用 Internet Explorer 缓存

禁用链接单击 Internet Explorer 10 [重复]

禁用网页的 Internet Explorer 11 阅读视图

Internet Explorer 9/JavaScript:禁用 ActiveX 的确认警报/弹出窗口 [关闭]

Internet Explorer 11 通过元标记禁用“在兼容性视图中显示 Intranet 站点”不起作用

Internet Explorer 8 不会为 ajax 请求传递会话 cookie