Réglage jusqu'à Expiration en-Têtes avec PHP
quelqu'un pourrait-il m'aider avec la mise en place à Expiration en-Têtes à l'aide de PHP uniquement,
.htaccess n'est pas bon, parce que mon hôte ne sera pas permettre à mod_expires sur apache.
Donc, fondamentalement, je suis à la recherche d'un moyen de le faire:
Expire Header
<FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$">
ExpiresDefault "access plus 365 days"
</FilesMatch>
avec php seulement.
il est aussi important d'avoir différents expiration des périodes pour les différents types de fichiers, j'ai donc essayé d'utiliser quelque chose comme:
header ("content-type: image/jpg; charset: UTF-8");
header ("cache-control: must-revalidate");
$offset = 48 * 60 * 60;
$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
header ($expire);
pour chaque type de fichiers, mais rien ne s'est passé.
les en-têtes après l'ajout du code PHP, et pris de cours privé:
Response Headersview source
Date Mon, 25 Apr 2011 19:47:10 GMT
Server Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By PHP/5.3.1
P3P CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Expires Mon, 1 Jan 2001 00:00:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Last-Modified Mon, 25 Apr 2011 19:47:10 GMT
Content-Encoding gzip
Pragma no-cache
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Transfer-Encoding chunked
Content-Type text/html; charset=utf-8
Request Headersview source
Host localhost
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.10 (maverick) Firefox/3.6.16 ( .NET CLR 3.5.30729) FirePHP/0.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.7,he;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Referer http://localhost/-----------------
Cookie fboard_settings[current_view]=flat; style_cookie=null; phpbb3_4s1go_k=; phpbb3_4s1go_u=2; phpbb3_4s1go_sid=8a3835a63834e9851b0cde3e2f6cff63; jw_clean_pro_tpl=jw_clean_pro; acpSearchCookie[searchphrase]=any; acpSearchCookie[acpSearch]=%D7%97%D7%A4%D7%A9+...; acpSearchCookie[cid]=0; acpSearchCookie[field_city]=0; 14a2bb08766d6180968b7925b7902d70=bgd3h1uj5dctoevtdiaj1jtmg6; 3e2fd857422e2463a01f9631f718017a=nbdjbmjsn9ee8ng90ui816hec2
x-insight activate
"Rien ne s'est passé"? Tu veux dire, il n'a pas de sortie de l'en-tête?
Oui, s'il vous plaît ajouter plus de détails. Où en êtes-vous de l'insertion de ce code PHP exactement?
ainsi, la vérification de la Yslow ou PageSpeed je vois le navigateur chaching notes, je suis d'insérer le code dans mon index.php sur le dessus, et je n'ai pas toutes les erreurs que les en-têtes envoyés. afin de vérifier l'onglet Net je vois: Expire le Lundi, le 1er janvier 2001 00:00:00 GMT Last-Modified Mon, 25 Apr 2011 09:05:17 GMT Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma no-cache
Oui, s'il vous plaît ajouter plus de détails. Où en êtes-vous de l'insertion de ce code PHP exactement?
ainsi, la vérification de la Yslow ou PageSpeed je vois le navigateur chaching notes, je suis d'insérer le code dans mon index.php sur le dessus, et je n'ai pas toutes les erreurs que les en-têtes envoyés. afin de vérifier l'onglet Net je vois: Expire le Lundi, le 1er janvier 2001 00:00:00 GMT Last-Modified Mon, 25 Apr 2011 09:05:17 GMT Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma no-cache
OriginalL'auteur alex | 2011-04-25
Vous devez vous connecter pour publier un commentaire.
En fonction de votre commentaire dans la question, il ressemble à votre système est en cours d'exécution avec un PHP réglage de
session.cache_limiter = nocache
. Cela permettrait d'envoyer automatiquement les en-têtes suivants:Seulement la
Expires
- tête que vous mentionnez diffère un peu (autant que je sache, Joomla utilise que très datetime, si je ne me trompe pas). Mais dans l'ensemble il ne fait aucune différence, parce que les deux dates sont dans le passé.Vous devriez essayer avec
session_cache_limiter(false);
dans votre code, pour arrêter PHP envoi de sa mise en cache par défaut en-têtes:MODIFIER:
En attendant, il est plus probable pour moi, que Joomla est à l'origine du problème. Si le code de test a accès à Joomla bibliothèques, essayez de l'insérer:
tout en haut de la fonction et de remplacer chaque
header
de l'enseignement, avecJResponse::setHeader
.Yep, vous devriez ai vu les en-têtes du script. Pouvez-vous s'il vous plaît vider les caches et cookies, exécutez de nouveau le code et montre-moi le premier raw de la réponse HTTP, après l'exécution? Vous avez Fiddler ou s/t pour surveiller HTTP communication, droit? Et il peut-être utile de savoir si vous êtes en cours d'exécution en vertu du PHP framework comme Zend Framework, nu ou PHP.
le site que je suis en train de travailler sur est basé sur joomla, sur localhost réglage de mon apache pour exécuter mod_expires et avec htaccess-je obtenir de l'expiration, le problème est sur l'ordinateur hôte. j'utilise tamperdata ou sur le net sur panneau firebug pour voir mes demandes
j'ai ajouté les en-têtes à ma question...
Êtes-vous le test du code de l'réponses sur votre localhost? Tant pis, vous avez ajouté les en-têtes.
OriginalL'auteur Jürgen Thelen
Qui m'aide pour les requêtes ajax:
Avez-vous de la sortie avant de définir les en-têtes? faire: error_repoerting(E_ALL); la recherche de quelque chose sur les en-têtes
en fait je n'ai pas accès à mon php.ini, donc je suis en utilisant les paramètres de l'hôte pour les erreurs, mais je suppose que les en-têtes envoyés d'erreur devrait apparaître si l'en-tête est incorrect
si la fonction error_reporting sertie de e_NONE vous ne verrez pas les mises en garde
essayez de créer un vide fichier php avec la seule de ces lignes et regardez les en-têtes
OriginalL'auteur Yuriy Vikulov