Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用CloudFlare的PHP站点上应该使用什么缓存头,以便;“始终在线”;作品_Php_Caching_Browser Cache_Cloudflare - Fatal编程技术网

在使用CloudFlare的PHP站点上应该使用什么缓存头,以便;“始终在线”;作品

在使用CloudFlare的PHP站点上应该使用什么缓存头,以便;“始终在线”;作品,php,caching,browser-cache,cloudflare,Php,Caching,Browser Cache,Cloudflare,您应该在带有CloudFlare的PHP站点上使用哪些缓存头,以便“”工作并通过其CDN缓存您的图像 CloudFlare的文档非常糟糕,他们的支持团队似乎不知道。通常,您不需要做任何事情–大多数“普通”web服务器将使用适当的静态缓存头提供静态内容。但是,如果您正在指定自己的头,或者由于某种原因服务器正在发送导致静态内容无法缓存的头,则您将希望覆盖或删除阻止缓存内容的任何头 使用可以查看内容标题的程序(Firefox中Firebug的“Net”选项卡、网站或类似工具)查看当前内容的标题。检查诸

您应该在带有CloudFlare的PHP站点上使用哪些缓存头,以便“”工作并通过其CDN缓存您的图像


CloudFlare的文档非常糟糕,他们的支持团队似乎不知道。

通常,您不需要做任何事情–大多数“普通”web服务器将使用适当的静态缓存头提供静态内容。但是,如果您正在指定自己的头,或者由于某种原因服务器正在发送导致静态内容无法缓存的头,则您将希望覆盖或删除阻止缓存内容的任何头

使用可以查看内容标题的程序(Firefox中Firebug的“Net”选项卡、网站或类似工具)查看当前内容的标题。检查诸如“缓存控制”和“过期”之类的内容。如果内容的缓存控制标头阻止缓存或已过期,这可能会阻止Cloudflare(和任何其他缓存)缓存它,您需要删除或更改它们

作为一个非常普遍的规则,要允许缓存某些内容,请指定将来某个内容的过期时间,以及public的缓存控制,最大年龄=将来某个时间,但是,您发送的头将取决于您提供的服务、您使用的服务器、客户端等

在不了解和理解各种缓存头的情况下,最简单的方法可能是使用类似的方法查看缓存的其他内容,并复制其头。比如说,

请注意,根据我的经验,总是在线通常不起作用

// set the most basic caching headers in PHP (cache for 1 month)
header('Cache-Control: public');
header('Expires: '.gmdate('D, d M Y H:i:s', strtotime('+1 month')).' GMT');

请参阅以获取简要说明。

使用“public”作为缓存控制对我来说是个问题,因为我的大多数页面都是动态的(一个网店)。这就是为什么我只告诉CloudFlare缓存


Cloudflare用作用户代理。您可以告诉CloudFlare使用PHP或.htaccess缓存您的页面(请参阅Ned Martin的解决方案),但告诉其他访问者不要缓存您的页面。

如果您希望始终在线(以及我们的许多缓存)以正常工作,您肯定不希望没有缓存和私有标题

“您的图像被其CDN缓存了吗?” 我们通过文件扩展名自动缓存现场资源(显然,我们不会缓存非现场资源,如Flickr或Facebook小部件)

注意:始终在线确实有一些限制&我们的文档(服务器响应代码等)中概述了所有这些限制。如果您最近才将该站点添加到CloudFlare,那么缓存中就不会有任何可显示的内容(始终在线的爬虫会在特定时间出现)


“始终在线”的未来迭代将允许用户“锁定”特定页面,这将(希望)消除我们目前的一些限制。

是否将
设置Cookie
标题阻止“始终在线”缓存页面?我尝试使用URL重写将不同的缓存头添加到我的IIS托管站点,但似乎没有任何帮助。URL重写无法删除标题,它只能使其成为空字符串,因此我不确定是空
Set Cookie
问题还是其他问题。