Slim v3 重复缓存控制头问题

3

我需要返回一个特定的缓存控制头 (Cache-Control: public, max-stale=13910400),但当我运行它时,我得到了这个结果: Curl -v

缓存控制已经重复,但是我只需要自定义的值。

$newResponse = $response->withHeader('Cache-Control', 'public, max-stale=13910400')->withJson($appInfo);
return $newResponse;

我尝试了这个,但它没有起作用(仅供测试):

$newResponse = $response->withoutHeader('Cache-Control')->withHeader('Cache-Control', 'public, max-stale=13910400')->withJson($appInfo);
return $newResponse;

我该如何正确设置头部信息?

谢谢


我已向Slim的作者报告了这个问题:https://github.com/slimphp/Slim/issues/2282 - Finesse
2个回答

2
我怀疑你可能存在中间件问题。
你上面的代码确实产生了正确的输出。
$app->get('/test', function ($req, $res, $args) {
    header_remove("Cache-Control"); //Edit <--
    $newResponse = $res->withHeader('Cache-Control', 'public, max-stale=13910400')->withJson(["message" => "Test"]);
    return $newResponse;
});

CURL输出

C:\Users\Glenn>curl -X GET -v http://localhost/vms2/public/test

HTTP/1.1 200 OK

Date: Tue, 13 Sep 2016 19:04:42 GMT * 服务器 Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3 没有被列入黑名单

服务器: Apache/2.4.10 (Win32) OpenSSL/1.0.1i PHP/5.6.3

X-Powered-By: PHP/5.6.3

Set-Cookie: VMS2=2qf14qr1c0eplgfvibi8t2hcd2; path=/

过期时间: Thu, 19 Nov 1981 08:52:00 GMT

Pragma: no-cache

缓存控制: public, max-stale=13910400

内容长度: 18

内容类型: application/json;charset=utf-8

{"message":"测试"}

  • 连接 #0 到主机 localhost 保持连接

注意你的代码。就像我一样,有两个缓存控制。 - legomolina
有趣...https://dev59.com/Z2445IYBdhLWcg3wpL1_ 看起来是有效的? - geggleto
我通常使用Postman,它和Firebug非常相似,但我只想要公共和最大过期时间出现。顺便说一句,我使用Apache,如果相关的话。 - legomolina
Slim没有设置任何默认值,这让我相信是Apache或PHP在做这件事情...我还没有找到任何关于PHP这样做的文档。 - geggleto
这是 PHP 添加的第一个... 我已经更新了我的答案,告诉你如何摆脱它 :) - geggleto

0

从您的代码中删除缓存控制并在您的 .htaccess 文件中添加以下代码:

<filesMatch "\\.(html|htm|php)$"> Header set Cache-Control "max-age=1, private, must-revalidate" </filesMatch>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接