【发布时间】:2016-01-09 23:38:50
【问题描述】:
我有一个简单的情况。我正在使用 jQuery 的 ajax 方法来获取一些数据。
当我在 url 中引用“api.json”时,我会得到带有 etag、缓存控制等的正确响应头。内容类型也是“application/json”
但是当我在url中引用一个“api.php”时,响应头发生了变化,这次没有etag,没有cache-control,content-type也是“text/html”(可以理解)。
在该 php 文件中,返回的数据使用 json_encode() 正确格式化。
我不明白的是,为什么 etag 和其他缓存标头行为不端?
我怎样才能让它们正确缓存?
【问题讨论】:
-
Apache 或您使用的任何 Web 服务器可能会基于每个文件类型设置标头。也许它们只为 .json 结尾设置,或者为 .php 结尾被覆盖。
-
设置你想要的合适的标题
-
任何提示或链接如何?
-
PHP 脚本默认不设置缓存头 - 这是有道理的,因为通常它们的输出 是 动态的并且经常更改。如果您想通过 PHP 脚本缓存内容输出的标头,您必须自己实现。 (但是你还必须自己实现对相应请求头的检查 - 否则脚本将照常运行,返回所有内容,并再次发送 200 状态码。)