0

我有一个 html 页面index.htm,其中有一个链接,该链接通过 ajax 请求获取 div 到另一个 html zoom.htm,并将其附加到正文,但是当我在 中进行更改时zoom.htm,更改不会反映,它类似于zoom.htm保存在某处(缓存)并且它正在从该缓存(我不知道它是否真正缓存)页面中获取 div。即使我从项目中删除了 zoom.htm,它仍然显示其内容。

$.get('zoom.htm', function(html) {
 $(html).hide().appendTo('body').fadeIn(500);
}, 'html');
  1. 每次我提出请求时,如何获得 zoom.htm 的新副本。
  2. 当我用 zoom.jsp 替换 zoom.htm 时(这是我想要做的,但我正在使用 html 页面进行测试),它无法正常工作(所有 html 都与 zoom.htm 相同)。
4

3 回答 3

0

测试获取的 zoom.htm 是否为缓存版本的最简单方法是清除浏览器缓存。例如,Firefox 中的“编辑 > 首选项 > 高级:缓存的 Web 内容 => 立即清除”。

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

<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所示。希望能帮助到你。

于 2012-08-11T11:20:29.353 回答
0

为了防止获得缓存的响应,您只需确保每次 url 都是唯一的,例如附加时间戳:

'zoom.htm?' + new Date().getTime()
于 2012-08-11T10:58:53.670 回答
0

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

此外,如果您使用某种 CMS,您可能还希望禁用服务器端缓存(如果它可以选择这样做)


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

于 2012-08-11T11:12:37.450 回答