web-dev-qa-db-ja.com

キャッシュ可能なリダイレクトを行う方法は?

ユーザーが私のWebサイトexample.comを入力すると、「優先」言語が検出され、(301 Moved Permanentlyリダイレクトを使用して)example.com/en/(英語)、example.com/it/(イタリア語)にリダイレクトされます。など.

それは完全に動作しますが、Google Page Speedツールを使用してWebサイトを分析すると、 以下のアドバイス が得られました。

多くのページ、特にモバイルページは、ユーザーを別のURL、たとえばwww.example.comからm.example.comにリダイレクトします。このリダイレクトをユーザーのブラウザーでキャッシュ可能にすると、サイトを繰り返し訪問するユーザーのページ読み込み時間を短縮できます。

そして後で

キャッシュライフタイムが1日の302リダイレクトを使用することをお勧めします。リダイレクトには、Vary:User-AgentヘッダーとCache-Control:privateヘッダーを含める必要があります。

だから私の質問は、どのようにPHPで「キャッシュ可能な」リダイレクトを行うことができますか?以下で十分でしょうか?

header("HTTP/1.0 302 Moved Temporarily");
header("Location: example.com/whatever");
exit;
5
federico-t

これはトリックを行う必要があります:

header("HTTP/1.0 302 Moved Temporarily");
header("Location: example.com/whatever");
header("Cache-Control: private");
header("Vary: User-Agent, Accept-Encoding");
exit;

Varyヘッダーの推奨事項は、 このGoogle開発者ページから キャッシュの最適化(およびIE <9の問題)です。 キャッシングネゴシエートされた応答 RFC2616(ヘッダーフィールド定義)の背景には、Cache-control-privateの背景もあります。 this stackoverflow page のVary:Headerについてのさらなる議論。

また、役に立つかもしれません: 多地域および多言語サイト および 多言語Webサイトの操作

6
initall