web-dev-qa-db-fra.com

Comment faire une redirection cacheable?

Lorsque les utilisateurs entrent sur mon site Web example.com, leur langue "préférée" est détectée et ils sont redirigés (à l'aide d'une redirection 301 déplacés en permanence) vers example.com/en/ (en anglais), example.com/it/ (en italien). , etc.

Cela fonctionne parfaitement, mais lorsque j’ai analysé mon site Web avec l’outil Google Page Speed, il m’a donné le conseil suivant .

De nombreuses pages, notamment les pages mobiles, redirigent les utilisateurs vers une autre URL, par exemple de www.example.com vers m.example.com. Le fait de rendre cette redirection compatible avec le navigateur de l'utilisateur peut accélérer les temps de chargement des pages pour les visiteurs récurrents sur un site.

Et plus tard, il dit

Nous vous recommandons d'utiliser une redirection 302 avec une durée de vie de cache d'un jour. La redirection doit inclure un en-tête Vary: User-Agent et un en-tête Cache-Control: private.

Donc, mes questions sont, comment puis-je faire une redirection "avec cache" en PHP? Ce qui suit serait-il suffisant?

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

Cela devrait faire l'affaire:

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

La recommandation pour l'en-tête Vary est à partir de cette page de développeur Google sur l'optimisation des caches (et des problèmes avec certains IE <9). Contexte sur mise en cache des réponses négociées à partir de RFC2616 (Définitions de champ d'en-tête) où vous trouverez également un fond sur Cache-control-private. Une autre discussion à propos de Vary: Header est également entre autres sur cette page de stackoverflow .

Vous pourriez également trouver utile: sites multirégionaux et multilingues et travailler avec des sites Web multilingues .

6
initall