ajax请求给出了不必要的响应

时间:2012-08-11 10:53:40

标签: javascript html ajax jsp

我有一个html页面index.htm,其中有一个链接,通过ajax请求将div传递给另一个html zoom.htm,并将其附加到正文,但是当我在{{{ 1}},更改没有反映出来,像zoom.htm这样的东西被保存在某个地方(缓存),它从缓存中获取div(我不知道它是否真的被缓存)。即使我从我的项目中删除了zoom.htm,它仍然显示其内容。

zoom.htm
  1. 每次提出请求时,如何获取zoom.htm的新副本。
  2. 当我用zoom.jsp替换zoom.htm时(这是我想要做的,但我正在使用html页面进行测试),它无法正常工作(所有html都与zoom.htm相同)。

3 个答案:

答案 0 :(得分:0)

要防止获得缓存响应,您只需通过附加时间戳来确保每次都是唯一的URL:

'zoom.htm?' + new Date().getTime()

答案 1 :(得分:0)

如果您获得的响应来自缓存,请尝试检查调试器。在Chrome开发者工具中,通常会将其标记为“(来自缓存)”。在Chrome中,您也可以强制禁用缓存。打开开发人员工具,然后单击右下方的齿轮。然后会显示叠加层。单击“禁用缓存”。进一步的请求不会使用缓存的对象。

此外,如果您使用的是某种CMS,则可能还需要禁用服务器端缓存,如果它可以选择这样做


另一方面......你在编辑正确的文件吗?您可能正在编辑该文件的副本,而不是您要检索的文件的副本。一直发生在我身上。

答案 2 :(得分:0)

测试zoom.htm beeing是否为缓存版本的最简单方法是清除浏览器缓存。例如,Firefox中的“编辑>偏好设置>高级:缓存网页内容=>立即清除”。

然后,假设您的服务器类似于Apache,您可以阻止浏览器使用Header指令缓存您的zoom.htm文件(即在项目目录中创建.htaccess文件),如下所示:

<filesMatch "\.(html|htm|js|css)$">
    FileETag None
    <ifModule mod_headers.c>
        Header unset ETag
        Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    </ifModule>
</filesMatch>

askapache所示。希望它有所帮助。