Mettre en cache les fichiers statiques

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !

Modérateur : Asumbaa

rouge14
Arias
Messages : 1
Inscription : 08 févr. 2016, 21:55

Mettre en cache les fichiers statiques

Message par rouge14 » 08 févr. 2016, 22:07

Bonsoir,

un post un peu long mais c'est pour exposer correctement mon problème.

je souhaite vos lumières car je n'arrive pas à mettre en place un système de mise en cache, car je suis sûr que ça m'apporterais un gain de performance pour la petite application WEB métier que je maintiens. (en mettant en cache côté navigateur les scripts javascript openlayers.js, jquery.js, mes fonctions persos, les feuilles de styles et les images).

J'ai posté pas mal sur un forum dédié à apache, mais je me demande si c'est bien un soucis côté serveur,
je commence à douté de la gestion du cache configuré par défaut de notre navigateur adoré Firefox.


voilà ma démarche de test :

déjà la config de mon serveur via un phpinfo()
Apache Version Apache/2.2.22 (Debian)
Apache API Version 20051115

j'ai lancé les commandes suivantes pour activer
sudo a2enmod expires
sudo a2enmod headers
service apache2 restart


je relance vérifie si les modules sont bien chargés toujours avec un phpinfo()
Loaded Modules core mod_log_config mod_logio mod_version prefork http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_expires mod_headers mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_status

donc c'est ok
Ensuite j'ai crée un fichier .htaccess à la racine du site pour appliquer une règle de cache sur mes feuilles de styles

Code : Tout sélectionner

<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/css A172800
</IfModule>
et là je vérifie les transactions effectuées avec firebug, cependant le navigateur demande systématiquement les fichiers au serveur, requête status 200 et jamais 304. Pourtant dans le champs d'expiration est bien donnée dans la requête par le serveur.
Je n'actualise pas la page avec F5, j'ai fait une page html simple qui charge un fichier .css sur le serveur et un lien href qui relance la page quand je le clique.

Réponse

Accept-Ranges
bytes
Cache-Control
max-age=172800

Connection
Keep-Alive
Content-Encoding
gzip
Content-Length
262
Content-Type
text/css
Date
Sun, 07 Feb 2016 13:26:56 GMT
Etag
"28191-1ec-52b2df98e6c27"
Expires
Tue, 09 Feb 2016 13:26:56 GMT

Keep-Alive
timeout=5, max=99
Last-Modified
Sun, 07 Feb 2016 13:22:23 GMT

Server
Apache/2.2.22 (Debian)
Vary
Accept-Encoding


Requête

Accept
text/css,*/*;q=0.1
Accept-Encoding
gzip, deflate
Accept-Language
fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
Connection
keep-alive
Host
192.168.1.66:8081
Referer
http://192.168.1.66:8081/test/test.html
User-Agent
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0



J'ai testé d'autres configuration en vain

Code : Tout sélectionner

<IfModule mod_expires.c>
<FilesMatch "\.(jpg|gif|png|pdf|css|js)$">
ExpiresActive On
ExpiresDefault "access plus 1 month"
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
</IfModule>
FileETag none
Grand snif :-?
Je ne comprend pas pourquoi mon navigateur (Firefox), ne tient pas compte de la configuration... je n'ai pas trouvé de solution. :?:

Comment obtenir enfin des réponses 304 à mes requêtes des fichiers annexes (css js images) de mes pages déjà visitées???

sizvix
Lézard à collerette
Messages : 427
Inscription : 05 sept. 2013, 15:03

Re: Mettre en cache les fichiers statiques

Message par sizvix » 25 mars 2016, 16:51

Coté Apache, je ne sais pas, j'ai toujours été dans le brouillard.
Mais coté "HTML"/client, tu peux utiliser "appcache" , ça garde en mémoire du navigateur les page que tu as dit, c'est fait surtout pour le offline.
Mais c'est passé en obsolète en faveur des servicesWorkers , qui je pense seront plus compliqué à mettre en place. En tout cas appcache sera pas désactivé tout de suite apparament.
https://developer.mozilla.org/fr/docs/U ... tion_Cache
Ne pas oublier :
AddType text/cache-manifest
dans le .htaccess ou dans la conf d'apache.
et de mettre à jour la version de ton manifest à chaque fois que tu modifies un des fichiers mémorisés.
Votre Navigateur : Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Iwinote, une webapp pour créer une partition à partir d'un air que vous sifflez ^^
https://www.indiegogo.com/projects/iwinote
Merci de soutenir son financement et de le partager :)

brieucs
Lézard vert
Messages : 109
Inscription : 02 mai 2015, 22:33

Re: Mettre en cache les fichiers statiques

Message par brieucs » 02 avr. 2016, 09:46

bonjour,
pour utiliser les "service-workers", ne faut-il pas avoir son site en https ?
Votre Navigateur : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0

Avatar de l’utilisateur
Abraxas
Animal mythique
Messages : 10183
Inscription : 28 juil. 2011, 14:06

Re: Mettre en cache les fichiers statiques

Message par Abraxas » 02 avr. 2016, 15:27

Avec les certificats gratuits Let's Encrypt, plus aucune raison de ne pas avoir son site en HTTPS: https://letsencrypt.org/ ;)
Votre Navigateur : Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0

brieucs
Lézard vert
Messages : 109
Inscription : 02 mai 2015, 22:33

Re: Mettre en cache les fichiers statiques

Message par brieucs » 04 avr. 2016, 14:09

en effet, le https va se généraliser :

- la page de MDN : "Using Service Workers" de franzy1709, Mar 25, 2016,
indique qu'on peut faire des tests en http-seul, avec une option des "outils de developpement" de firefox.

- pour info, OVH offre le https en bas de gamme, par un accès au site via le serveur explicite.

Dans le cas particulier de Firefox-OS et de B2G, il sera utile de disposer des indications de validité au niveau de chaque API. (FxOS va se rapprocher du W3C, tandis que B2G gardera des fonctions spécifiques et n'assurera pas forcément tout le W3C).
Votre Navigateur : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités