在将请求重定向到不同的主机之前,我正在对文件的响应代码进行一些cURL检查(以确保在重定向之前文件存在)。
当我们都开心的时候,我把它们送到远程主机的服务器上,我们都很开心。
唯一的问题似乎是它没有缓存在用户的机器上。有什么我可以做的让用户浏览器知道这是同一个文件?我认为它本来就知道它只是一个标题位置重定向(即标题('location:http://www.locationtogo.com/asda?242');
感谢您的帮助!
-------更新----------
似乎有很多问题;让我一步一步解释......
我现在意识到 - 愚蠢的错误 - 但是这里会列出只是让任何人经历同样的事情 - 我当然是在寻找200响应,而不是200或304。
现在正在缓存。
答案 0 :(得分:0)
您需要添加Cache-Control
或Expires
标头以及重定向,以表明它可以缓存。
示例(这将允许浏览器将响应缓存一小时)
header('Cache-Control: max-age=3600')
答案 1 :(得分:-1)
默认情况下,PHP和apache不会缓存PHP文件。我最近遇到了这个问题。但是,如果需要,您可以返回304,这将解决问题。我是用etags做的。
只需在首次访问时首次发送etag哈希值。
header('Etag: '.$eTagHash);
然后,检查etag是否存在,如果是,请告诉浏览器它是304未修改。
if(isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
if(trim($_SERVER['HTTP_IF_NONE_MATCH']) == trim($eTagHash)){
header("HTTP/1.1 304 Not Modified");
exit;
}}
您可以将$ eTagHash设置为您想要的任何内容。你也应该在apache服务器上启用etags(大多数都这样做)。
如果您需要在其他地方重定向,只需更改etag哈希值,当它不匹配时,您可以使用新值再次向浏览器发送标题etag。