Bonjour,
Je ne sais pas comment indiquer une mise en cache comme me le demande l’excellent outil d'optimisation master-web de google


Si vous définissez une date d'expiration ou une durée de validité maximale pour les ressources statiques dans les en-têtes HTTP, vous indiquez au navigateur d'aller chercher les ressources déjà téléchargées sur le disque local plutôt que sur le réseau.
_________________________
Citant par exemple
 http://www.monsite.fr/sh_care.css  (délai d'expiration non spécifié)
 https://apis.google.com/js/plusone.js?publisherid=103820838984742497497  (30 minutes)


Ors je ne vois pas comment on indique cet attribut dans une page html !
Merci d'avance de votre aide !
Modifié par Christele (21 Nov 2013 - 18:18)
Bonjour,

Pour les mise en cache de pages html et css, voilà comment je procède:
Je met ce bout de code dans mon fichier .htaccess, à la racine du site:
<IfModule mod_headers.c>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\\.(x?html?|php)$">
Header set Cache-Control "max-age=600, private, must-revalidate"
</FilesMatch>
</IfModule>


et en plus, pour le fichier css, il s'agit en fait d'un fichier php que je renomme en css comme ça:
- dans le dossier css, je crée un fichier .htaccess dans lequel je met ceci:
RewriteEngine on
RewriteRule ^nom-du-fichier\.css$  nom-du-fichier.php [L]

<IfModule mod_headers.c>
<FilesMatch "\\.(x?html?|php)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
</IfModule>


- dans le fichier php (renommé en fichier css), je met ceci:
<?php
header("Content-type: text/css; charset=windows-1252");
header("Vary: Accept-Encoding");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 604800)." GMT");
header("Cache-Control: public, max-age=604800");
ob_start("ob_gzhandler");
echo"
body{ blablabla
}
"; ?>

Modifié par delphthom (21 Nov 2013 - 15:24)
Houla !! mille mercis, mais cela me parait super compliqué Smiley confused
Je me saurais jamais faire tout cela ! surtout que je ne comprends pas tout, comme ce php/css pourquoi ??

En plus j'ignores si c'est ce que google demande !
Bref je vais analyser ta solution.
Merci encore
Faire un fichier php et le renommer en css permet d'insérer des infos en header (par exemple, des infos de mise en cache) ; chose que tu ne peux pas faire directement sur un fichier css.

Je parle de php/css parce qu’apparemment, c'est pour un fichier css (le fichier sh_care.css) que google te demande de spécifier un délai d'expiration du cache:
http://www.monsite.fr/sh_care.css  (délai d'expiration non spécifié)


Rassure toi, ce n'est pas si compliqué. Il te suffit de faire un copier/coller de ton fichier "sh_care.css" sur un fichier que tu nommes "sh_care.php" et tu ajoute tout en haut du fichier ce bout de code:
<?php
header("Content-type: text/css; charset=windows-1252");
header("Vary: Accept-Encoding");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Expires: ".gmdate("D, d M Y H:i:s", time() + 604800)." GMT");
header("Cache-Control: public, max-age=604800");
ob_start("ob_gzhandler");
echo"

et tout en bas, tu ajoutes:
"; ?>


Ensuite, dans un autre fichier que tu nommes ".htaccess" (n'oublie pas le "." devant htaccess), tu ajoutes:
RewriteEngine on
RewriteRule ^sh_care\.css$  sh_care.php [L]

<IfModule mod_headers.c>
<FilesMatch "\\.(x?html?|php)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
</IfModule>

(Je ne sais plus si ce qu'il y a entre les balises <IfModule> est vraiment indispensable).

Et voilà, ton fichier est mis en cache ! Smiley biggrin
Modifié par delphthom (21 Nov 2013 - 17:41)