2010-09-18 10 views
2

Je remarque que dans mon environnement de production (où j'ai mis en place memcached) voir un en-tête cache-control - max-age dans firebug, chaque fois que je regarde un index page (messages par exemple).âge max avec nginx/passager/memcached/rails2.3.5

Cache-Control max-age=315360000 

Dans mon environnement de développement, cet en-tête ressemble à ce qui suit.

Cache-Contro private, max-age=0, must-revalidate 

Pour autant que je sais que je ne l'ai pas fait quelque chose de spécial avec mon fichier nginx.conf pour indiquer l'âge maximum pour le contenu régulier, je n'ai expires-max jeu pour css, jpg, etc. voici mon nginx. fichier .. conf

http://pastie.org/1167080

Alors pourquoi est-ce cache-commande est en cours d'? Comment puis-je contrôler ce contrôle de cache, car l'effet secondaire est un peu mauvais. C'est ce qui arrive.

1 - Demande de l'utilisateur et la liste all_posts obtenir une liste de 10 pages (paginés)

2 - utilisateur page 1, 2 3 et les caches respectifs sont créés.

3 - L'utilisateur revient à la page 1 et firefox ne fait même pas de demande au serveur. Normalement, je m'attendrais à ce qu'il reqeust et frapper le cache créé à l'étape n ° 2.

L'autre problème est que si un nouveau message a été créé et que maintenant le cache est actualisé et qu'il devrait être en haut de la page 1, l'utilisateur ne peut pas le voir .. parce que le navigateur ne frappe pas le serveur.

Aidez s'il vous plaît!

Merci

Mise à jour:

J'ai essayé la mise expires_now dans mon action index. AUCUNE différence le max-age est toujours la même grande valeur.

Serait-ce un problème avec mon expression rationnelle max-age? Je veux essentiellement qu'il ne corresponde qu'aux fichiers d'actifs (images, js, css etc.)

Répondre

0

Je pense que vous avez raison de dire que c'est un problème avec votre regex max-age.

Vous correspondant contre ce modèle: ^.+.(jpg|jpeg|gif|png|css|js|swf)?([0-9]+)?$

Parce que vous avez des points d'interrogation (« cette partie est facultative ») après les deux sections parenthésées, la seule partie obligatoire de l'expression rationnelle est que la demande URI ont au moins deux caractères (.+.). En d'autres termes, il correspond à peu près à toutes les demandes sur votre site.

C'est le modèle que nous utilisons: \.(js|css|jpg|jpeg|gif|png|swf)$

qui correspondent seulement les demandes de chemins se terminant par un point, puis l'un de ces sept modèles.