Back to Question Center
0

Semalt: paramètre de cache optimal pour la page dynamique

1 answers:

Mes pages Web sur mon site Web peuvent sembler statiques à l'utilisateur, mais elles sont réellement dynamiques puisque les données sont extraites d'une base de données et peuvent être changées n'importe quand

Pour une raison quelconque, je pense qu'il pourrait y avoir des valeurs plus optimales pour le contrôle du cache et expire. Je pense aussi que je pourrais utiliser la validation etag mais je ne suis pas sûr à 100%. Je veux utiliser des valeurs optimales basées sur la perspective du pire utilisateur Source - umzug telefonanschluss telekom kosten.

Semalt I activer la mise en cache, et si oui, combien de temps? et d'autres sites dynamiques ont-ils activé la mise en cache pour leurs pages html dynamiques?

February 6, 2018

Il y a quelques options, mais elles peuvent être difficiles à implémenter (en fonction de la façon dont votre page est construite), et ont tendance à être limitées, à moins que votre page HTML ne soit assez grande.

Etags

Il y a plusieurs façons de générer un etag pour votre page dynamique, le plus simple est probablement juste de créer un hachage de tout le contenu HTML avant de l'envoyer. De cette façon, vous pouvez être sûr que ce sera différent si quelque chose sur la page a changé.

Si vous faites cela, vous devez vérifier manuellement l'en-tête If-None-Match s'il est présent. S'il correspond à votre ETag, vous renvoyez un 304 au lieu du corps HTML (économie de bande passante).

Je pense que vous avez dit ailleurs que vous utilisez PHP, donc le code pour cela serait quelque chose comme ceci (non testé):

  ob_start 

;/ * Tout votre code existant ici * /$ content = ob_get_contents

; ob_end_clean

;$ etag = md5 ($ content);header ('ETag:'. $ etag);if (isset ($ _ SERVER ['Si-None-Match']) && $ _SERVER ['If-None-Match'] == $ etag) {// pas besoin d'envoyer le corps de la réponseen-tête ('HTTP / 1. 1 304 non modifié ');Sortie; }echo $ content;

(Cette approche ne serait pas un bon choix si vous avez volontairement randomisé des éléments sur votre page qui changent chaque rafraîchissement, ou quelque chose qui change très fréquemment comme une horloge. )

Derniers en-têtes modifiés

Celui-ci a tendance à être plus difficile à mettre en œuvre. Vous pouvez utiliser les en-têtes Last-Modified sur les pages dynamiques si vous pouvez déterminer de manière fiable la dernière heure modifiée pour chaque élément dynamique de la page, ainsi que tout autre élément susceptible de modifier l'apparence de la page (e. g. les préférences de l'utilisateur, que vous avez mentionnées ailleurs). Si oui, quelle que soit l'heure la plus récente est celle que vous renvoyez comme en-tête. Vous devez également vérifier la présence de If-Modified-Since , et ne pas renvoyer le corps si l'horodatage n'est pas plus ancien que le dernier modifié (en utilisant un code similaire à celui ci-dessus). En pratique, il a tendance à être plus difficile que cela vaut la peine.


La raison pour laquelle ces approches ne sont pas souvent utilisées est que les deux vous obligent à générer la page entière sur le serveur avant de pouvoir déterminer si elle doit être renvoyée à l'utilisateur.Puisqu'il a tendance à être la latence et génération de la page qui sont les goulots d'étranglement, l'avantage ici est limité. En fait, renvoyer le code HTML au client (en particulier s'il est gzippé) ne prend généralement pas beaucoup de temps si votre page HTML n'est pas énorme.

Comme je l'ai suggéré ailleurs, si vous voulez améliorer les performances de la page HTML, vous feriez mieux d'utiliser quelque chose comme Varnish, et d'essayer de rendre la page HTML plus conviviale pour le cache.