「常時オンライン」が機能し、イメージが CDN によってキャッシュされるように、CloudFlare を使用する PHP サイトでどのキャッシュ ヘッダーを使用する必要がありますか?
CloudFlare のドキュメントはひどいものであり、サポート チームはそのことを認識していないようです。
「常時オンライン」が機能し、イメージが CDN によってキャッシュされるように、CloudFlare を使用する PHP サイトでどのキャッシュ ヘッダーを使用する必要がありますか?
CloudFlare のドキュメントはひどいものであり、サポート チームはそのことを認識していないようです。
Always Online(および多くのキャッシュ)を適切に機能させたい場合は、キャッシュなしのヘッダーとプライベートヘッダーを使用したくないことは間違いありません。
「あなたの画像はCDNによってキャッシュされますか?」ファイル拡張子によってオンサイトリソースを自動的にキャッシュします(FlickrやFacebookウィジェットなどのオフサイトリソースはキャッシュしません)。
注:Always Onlineにはいくつかの制限があり、それらの制限はすべてドキュメント(サーバーの応答コードなど)に概説されています。最近CloudFlareにもサイトを追加したばかりの場合、表示するキャッシュには実際には何もありません(Always Onlineクローラーは特定の時間に停止します)。
Always Onlineの将来のイテレーションでは、ユーザーが特定のページを「固定」できるようになります。これにより、(願わくば)現在のいくつかの制限がなくなります。
通常、何もする必要はありません。ほとんどの「通常の」Web サーバーは、適切な静的キャッシュ ヘッダーを使用して静的コンテンツを提供します。ただし、独自のヘッダーを指定している場合、または何らかの理由でサーバーが静的コンテンツをキャッシュしない原因となるヘッダーを送信している場合は、コンテンツのキャッシュを妨げているヘッダーをオーバーライドまたは削除する必要があります。
コンテンツのヘッダーを表示できるプログラム (Firefox の Firebug の「ネット」タブ、Web サイトhttp://web-sniffer.net/など) を使用して、コンテンツに現在含まれているヘッダーを表示します。「Cache-Control」や「Expires」などを確認します。コンテンツにキャッシングを妨げるキャッシュ コントロール ヘッダーがある場合、または既に期限切れになっている場合、おそらく Cloudflare (およびその他のキャッシュ) によるコンテンツのキャッシングが妨げられるため、それらを削除または変更する必要があります。
非常に一般的なルールとして、何かをキャッシュできるようにするには、何かの Expires 時刻を将来の日付に指定し、public の Cache-Control に max-age= 将来のある時点を指定します。ただし、送信するヘッダーは次の条件に依存します。何を提供しているか、どのサーバーを使用しているか、クライアントは何かなど。
さまざまなキャッシュ ヘッダーを学んだり理解したりしない最も簡単な方法は、おそらくhttp://web-sniffer.net/のようなものを使用して、キャッシュされている他のコンテンツを調べ、そのヘッダーをコピーすることです。たとえば、http://web-sniffer.net/?url=ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
私の経験では、Always Online は通常は機能しないことに注意してください。
// 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');
簡単な説明については、 http://hardanswers.net/dynamic-webpage-cachingを参照してください。
ほとんどのページが非常に動的 (Web ショップ) であるため、Cache-Control として 'public' を使用することは私にとって問題でした。そのため、CloudFlare のみにキャッシュするように指示しました。
Cloudflare はMozilla/5.0 (互換性あり; CloudFlare-AlwaysOnline/1.0; +http://www.cloudflare.com/always-online)をユーザー エージェントとして使用します。PHP または .htaccess (Ned Martin のソリューションを参照) を使用してページをキャッシュするように CloudFlare に指示できますが、他の訪問者にはページをキャッシュしないように指示できます。