【问题标题】:Will jQuery ajax cache even if php headers are issued to the contrary?即使发出相反的php标头,jQuery ajax也会缓存吗?
【发布时间】:2016-01-05 05:40:15
【问题描述】:

http://api.jquery.com/jquery.ajax/表示缓存的默认值为true,如果设置为false,它将强制浏览器不缓存请求的页面。

如果cache 设置为true 但服务器返回一些标头声明不缓存,客户端是否仍会尝试使用缓存结果?是否有一些浏览器在这方面有不同的行为?

<?php

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

【问题讨论】:

    标签: php jquery ajax caching


    【解决方案1】:

    如果您关心缓存 cache:true 所做的就是将时间戳附加到 url。

    这使它成为一个唯一的 url,因此浏览器几乎不可能缓存,因为浏览器不会引用该 url

    关于如果服务器发出标头不这样做,客户端是否会尝试缓存结果,“实际上它应该可以工作”并且客户端不会缓存结果。

    【讨论】:

    • 是的,我知道时间戳是如何用于使每个 URL 唯一的,因此不会被缓存。我在问cache 是否为true,因此将使用相同的 URL,如果服务器发出不同的标头,结果是否会被缓存。
    • 不太确定,所以如果有问题,请使用时间戳...除非您要求提供 api 供其他人访问。也可以添加过去的过期标头
    • 也不是很确定,但想确定一下。我通常将标头放在服务器响应中,因为它知道是否发生了变化,但如果这样做对行为没有任何影响,我应该采取不同的做法。
    • 我在几个现代浏览器上测试过,客户端不会缓存结果。在旧浏览器上不确定,但是...
    猜你喜欢
    • 2021-10-20
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2011-02-18
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多