Répondre à HTTP_IF_MODIFIED_SINCE et HTTP_IF_NONE_MATCH en PHP
J'ai mis en cache du contenu dynamique en PHP 5.1.0+. J'ai déjà envoyer le bon en-tête (y compris de Dernière modification et ETag) à ses clients.
Maintenant, je veux que mon script pour être en mesure de répondre à $_SERVER['HTTP_IF_MODIFIED_SINCE']
et $_SERVER['HTTP_IF_NONE_MATCH']
lorsqu'il est présent. Lorsque les conditions de matches, je veux répondre à un HTTP 304 "Not Modified"
aux clients.
Quelles sont les conditions? Quand exactement, j'ai un problème 304 au lieu de l'ensemble du contenu?
La accepté de répondre à la question
Comment savoir quand envoyer une réponse " 304 not Modified semble que cette question correctement, mais j'ai du mal à port code en PHP 5.
Merci!
OriginalL'auteur AlexV | 2010-01-04
Vous devez vous connecter pour publier un commentaire.
J'ai toujours utilisé:
Ne me souviens pas si je l'ai ou ai eu à partir de quelque part d'autre...
Je suis généralement à l'aide d'en haut d'un fichier de cette façon:
caching_headers (__FILE__, filemtime(__FILE__));
.Vraiment utile! Essayé cela, mais la réalisation de plusieurs demandes de donner à l'inverse, un 200 et 304. Le déplacement de la "Last-Modified" et "Cache-Control" après le "ETag" définition fixe.
comment exactement? Pas sûr de ce que tu veux dire concernant la modification du code...
OriginalL'auteur Rich Bradshaw
La réponse que vous faites référence semble contenir tout ce que vous devez. Pour résumer:
OriginalL'auteur Wim
Voici un extrait de mon render_file() fonction.
La modification de la date de validation a été assez pour moi, le calcul d'une Etag (somme de contrôle pour le contenu md5/sha1) génère un serveur de frais généraux. Cependant, les etags sont moins susceptible de causer des erreurs. Si le contenu de l'exactitude est important de vérifier la IF_NONE_MATCH premier. Si le IF_NONE_MATCH n'est pas défini, puis vérifier le IF_MODIFIED_SINCE. Ne pas vérifier la IF_MODIFIED_SINCE si l'etag ne pas correspondre. Parce que vous savez que le cache du navigateur n'est pas valide! Envoyez simplement les 304-tête et exit()
OriginalL'auteur Bob Fanger
Si je pouvais améliorer légèrement sur l'original de la brillante réponse de la part des Riches Bradshaw https://stackoverflow.com/users/16511/rich-bradshaw
Ce code est modifié et maintenant 100% de passe de l'if-Modified-since et Si-None-Match des contrôles. Il a également correctement les formats de la Date de Dernière modification comme réponse originale à cette question envoie +0000 sur la fin au lieu de GMT et ajoute l'en-tête VARY de la réponse 304. Vous pouvez le tester à redbot.org
OriginalL'auteur MitchellK
De - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5
Donc, si vous envoyez un 304 de ne pas envoyer de l'organisme.
Voulez-vous dire, à quel point, dans le script php?
Ah désolé, je dois ralentir, = ]
Je veux dire dans quels cas j'ai envoyer un 304. Exemple de réponse que je cherche: "Envoyer 304 lorsque HTTP_IF_MODIFIED_SINCE présent et correspondre à votre date de dernière modification ET quand HTTP_IF_NONE_MATCH est présent et correspondre à votre ETags".
OriginalL'auteur mr-sk
Cet article répondra à toutes vos questions sur la mise en cache
J'ai trouvé que l'ajout de
Au fond de mon fichier htaccess (ci-dessous toutes les règles de réécriture).
OriginalL'auteur John Magnolia
Pourquoi?
Avoir fait beaucoup de recherches sur le sujet, j'ai trouvé que les requêtes conditionnelles de ralentir un site. Il y a certains cas où cela n'est pas le cas, mais la cartographie pour les modèles généraux d'utilisation, globalement, il en résulte une baisse de débit et moins efficace de la mise en cache.
C.
La réponse courte à cette question est d'environ 5 pages de texte et de graphiques. Je garde un sens pour le mettre quelque part sur internet.....surveillez cet espace.
Ce serait intéressant de voir ça 🙂
OriginalL'auteur symcbean