Mettre en cache les fichiers statiques

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mettre en cache les fichiers statiques

Re: Mettre en cache les fichiers statiques

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

Arrivez vous à avoir des requêtes 304 lors d'une seconde visite de vos pages sur les fichiers "annexes" (js css images)?en fait.

Re: Mettre en cache les fichiers statiques

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

Ok, en fait j'ai essayé avec moins et puis avec tous lol (max-age soit expires, et soit etag soit last-modified.) sans résultat. Mon serveur ne souffre pas, c'est plutôt la bande passante que je veux optimiser car mon appli web est utilisé en saisie sur le terrain en milieu rural avec une connexion faible. Même si j'ai une solution pour travailler en hors connexion, c'est intéressant de pouvoir transférer les données pour que l'équipe puisse consulter l'évolution en temps réel et en consulter de façon "rapide".
J'avoue que je suis très Firefox et je ne contrôle pas tous les terminaux qui vont se connecter.
Je suis étonné que ce soit si complexe à mettre en place. Je me rappelle que quand j'étais étudiant c'était l'inverse, fallait que je pense à vider le cache ou rafraîchir avec F5 pour mettre à jour mes tests de script... la roue tourne.
Personne rencontre les mêmes soucis?? et besoin??

Re: Mettre en cache les fichiers statiques

par Genova » 08 févr. 2016, 22:37

L'important ce n'est pas ce que ton navigateur demande, mais ce que ton serveur renvoie. Si ton navigateur décide de ne pas garder la page en cache, c'est peut être du à un mauvais réglage de ta part sur ton navigateur. Essaie avec Chrome ou un autre pour voir si tu as le même comportement.
Je suis un peu surpris par tous les headers que tu renvoies par contre, tu cumules max-age, expires, etag et last-modified. Généralement on choisi soit max-age soit expires, et soit etag soit last-modified.

+1 pour Sékiltoyai sinon, c'est très facile à installer Varnish, et ton serveur te dira un grand merci :)

Re: Mettre en cache les fichiers statiques

par Sékiltoyai » 08 févr. 2016, 02:17

Bonjour,

Sans que cela ne règle assurément le problème du navigateur, pour les questions de cache une très bonne pratique est de placer un serveur spécialisé tel que Varnish (https://www.varnish-cache.org) devant Apache. Ce type de serveurs gèrera bien plus efficacement les questions de cache que Apache (notamment en plaçant les fichiers les plus demandés en RAM).

Cordialement

Mettre en cache les fichiers statiques

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

Bonsoir,

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).
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


<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

<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.