Question

Je suis en train de dire nginx pour mettre en cache certaines de mes biens (js, css) pour toujours, ou au moins pour un temps très long.

L'idée est qu'une fois qu'un actif paquet est compilé et publié avec une /assets/ URI préfixe (p. ex. /assets/foo-{fingerprint}.js) il reste là et ne pas avoir besoin de changer.

Les internets m'a dit que je devrais écrire la règle suivante:

location ~ ^/assets/.*-([^.]+)\.(js|css)$ {
  gzip_static on; # there's also a .gz of the asset
  expires max;
  add_header Cache-Control public;
  add_header Last-Modified "";
  add_header ETag "";
  break;
}

Je m'attends à ce qui entraînerait des réponses avec le code HTTP 304 "Non Modifié", mais ce que j'ai est une constante HTTP 200 (OK) à chaque fois.

J'ai essayé quelques autres approches, par exemple:

a) la définition explicite de la modification du temps à un point constant dans le temps dans le passé;

add_header Last-Modified "Thu, 01 Jan 1970 00:00:00 GMT";

b) de commutation pour If-None-Match des contrôles;

add_header ETag $1;
if_modified_since off;

Cependant, la seule chose qui a vraiment travaillé en tant que besoin, c'était ceci:

add_header Last-Modified "Thu, 01 Jan 2030 00:00:00 GMT";
if_modified_since before;

Je suis perdu.C'est contraire à tout ce que je pensais être bon.S'il vous plaît aider.

Était-ce utile?

La solution

Vous devriez changer votre internets, car ils vous donnent de mauvais conseils.

Suffit d'enlever toutes add_header les lignes de votre emplacement (ainsi que du surplus de brake):

location ~ ^/assets/.*-([^.]+)\.(js|css)$ {
   gzip_static on; # there's also a .gz of the asset
   expires max;
}

et de lire les docs du vrai Internet: http://nginx.org/r/expires et http://tools.ietf.org/html/rfc2616

Autres conseils

Il semble faire partie de ma configuration.Au cours de mes recherches, j'ai réalisé que le navigateur utilise l'analyse heuristique pour valider les demandes avec ConditionalGet en-têtes d'E-Tag, de Dernière modification).Il fait beaucoup de sens pour les réponses, de sorte que vous pouvez gérer tout cela pour économiser les ressources du serveur.

Mais en termes de fichiers statiques (js, css, images), vous pouvez dire navigateur afin de les servir immédiatement et sans mise en Obtenir la validation.Il est utile si vous mettez à jour le fichier de nom si un changement a lieu.

Cette partie de la configuration permet:

add_header Cache-Control public;
add_header Last-Modified "";
add_header ETag "";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top