Ce qui pourrait être l'ajout de “Pragma:no-cache” à mon en-Têtes de réponse? (Apache, PHP)
J'ai un site qui entretien que j'ai hérité, ce qui est un gros poilu mess.
L'une des choses que je fais est d'améliorer les performances. Entre autres choses, je suis en ajoutant Expires
en-têtes pour les images.
Maintenant, il y a certaines images qui sont servis par le biais d'un fichier PHP, et je remarque qu'ils ont le Expires
en-tête, mais ils obtiennent également chargé à chaque fois.
Regarder en-Têtes de Réponse, je vois ceci:
Expires Wed, 15 Jun 2011 18:11:55 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Qui, évidemment, explique le problème.
Maintenant, j'ai regardé toute la base de code, et il ne dit pas "pragma" n'importe où. .htaccess ne semble pas avoir tout ce qui est lié soit.
Les idées de ce que pourrait être la définition de ces "pragma" (et "cache-control") des en-têtes, et comment puis-je l'éviter?
- Exécuter
grep -R pragma .
à regarder à travers les fichiers.
Vous devez vous connecter pour publier un commentaire.
Créer un simple fichier qui comprend aucune de vos bibliothèques PHP mais qui vit dans le même dossier que le fichier qui sert de vos images par l'intermédiaire d'un fichier PHP.
Demande de ce fichier par le biais d'un navigateur et vérifier les en-têtes. Si vous voyez les en-têtes de Réponse que vous ne voulez pas, vous savez qu'ils sont configurés via apache et pas généré via un fichier PHP et vous pouvez vous concentrer vos recherches sur .htaccess dans le répertoire de l'arbre, et sur le site http.confg et autres fichiers de configuration d'apache. Vous aurez envie de rechercher
et
les sections qui s'appliquent à votre site.
Si vous ne voyez pas les en-têtes dans une demande pour que d'un simple fichier PHP, vous savez que PHP est de définir les en-têtes de quelque part. À la fin de votre image servant de fichier (ou juste après les échos de l'image et des sorties), mais le script PHP ci-dessous)
Demande une image par le biais de la diffusion d'images d'URL. Que l'extrait ci-dessus permet d'imprimer tous les fichiers PHP utilisée dans la demande. (vous aurez probablement besoin de l'affichage de la source ou de l'utilisation de curl pour voir la sortie brute, comme le navigateur de signaler une défaillance de l'image)
Avoir un sous-ensemble de vos fichiers pour fichier de travail, de faire une recherche pour les appels vers les
fonction. Le
header
fonction est la seule façon (je pense) que raw code PHP peut définir des en-têtes de Réponse. Vous aurez également besoin de la recherche pourdans le cas où il n'y a aucune dynamique de code sur la page à l'aide de PHP de la méta-programmation des capacités d'appeler le
header
fonction.Bonne chance!
/etc/apache2/conf-enabled/server-cgi-bin.conf
.Le coupable peut être du php.ini, où la session.cache_limiter=nocache. Modifiez la valeur à vide ou public, afin d'éviter les anti-cacher les en-têtes.
J'ai eu un problème similaire avec
Pragma: nocache
session_cache_limiter(false);
avantsession_start();
semblait pour la supprimer.Essayez de désactiver les en-têtes dans
.htaccess
. L'exemple ci-dessous va annuler les modifications pour tous les fichiers correspondant aux extensionsico
,jpeg
,png
,gif
,js
,css
:Vous pouvez trouver quelques indices dans cet article.
Je l'ai fait au moment de l'exécution avec ceci:
qui a forcé le script pour désactiver la Pragma-tête.
Si ce n'est pas dans .htaccess il peut être dans le principal fichier de configuration d'Apache ou de l'une de ses comprend, selon la configuration.
Il est intéressant de noter pour les personnes ayant les mêmes problèmes que beaucoup de cadres de l'auto-ajouter des en-têtes en particulier ceux de la mise en cache. Il est assez facile de les surcharger, soit dans le cadre de la bibliothèque ou au sein de votre application.