Pro*_*irl 5 php caching browser-cache cloudflare
您应该在具有CloudFlare的PHP站点上使用哪些缓存标头,以便" 始终在线 "工作并且您的图像由其CDN缓存?
CloudFlare的文档非常糟糕,他们的支持团队似乎也不知道.
通常,您不需要做任何事情 \xe2\x80\x93 大多数 \xe2\x80\x9cnormal\xe2\x80\x9d Web 服务器将使用适当的静态缓存标头提供静态内容。但是,如果您指定自己的标头或由于某种原因您的服务器发送导致静态内容不被缓存的标头,您将需要覆盖或删除任何阻止内容被缓存的标头。
\n\n使用可以查看内容标题的程序(Firefox 中 Firebug 的 \xe2\x80\x9cNet\xe2\x80\x9d 选项卡、网站http://web-sniffer.net/或类似网站)来查看哪些标题您的内容目前有。检查诸如 \xe2\x80\x9cCache-Control\xe2\x80\x9d 和 \xe2\x80\x9cExpires\xe2\x80\x9d 之类的内容。如果内容具有阻止缓存的缓存控制标头或已过期,这可能会阻止 Cloudflare(以及任何其他缓存)对其进行缓存,您将需要删除或更改它们。
\n\n作为一个非常一般的规则,要允许缓存某些内容,请指定将来某些内容的过期时间,以及公共的 Cache-Control ,其中 max-age=将来的某个时间,但是您发送的标头将取决于你\xe2\x80\x99正在服务什么,你\xe2\x80\x99正在使用什么服务器,客户端是什么,等等。
\n\n在不学习和理解各种缓存标头的情况下,最简单的方法可能是使用http://web-sniffer.net/之类的东西来查看缓存的其他内容,并复制其标头。例如,http://web-sniffer.net/? url=ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
\n\n请注意,根据我的经验,“始终在线”通常不起作用。
\n\n// set the most basic caching headers in PHP (cache for 1 month)\nheader(\'Cache-Control: public\');\nheader(\'Expires: \'.gmdate(\'D, d M Y H:i:s\', strtotime(\'+1 month\')).\' GMT\');\nRun Code Online (Sandbox Code Playgroud)\n\n有关简要说明,请参阅http://hardanswers.net/dynamic-webpage-caching 。
\n