2012-08-27 8 views
2

J'ai cherché partout une solution à cela, mais jusqu'à présent rien. Je rends dynamiquement une page HTML dans Node.js/Express, en générant un ETag par SHA256 en hachant la chaîne HTML et en envoyant la page via nginx. Pour une raison quelconque, Google Chrome ne mettra pas en cache la page ou n'enverra pas d'en-tête "If-None-Match" pour l'ETag précédente.Google Chrome ne cache pas le contenu

Voici mes en-têtes de requête et de réponse:

Demande:

GET/HTTP/1.1 
Host: dev.logan.oikoi.co 
Connection: keep-alive 
Cache-Control: max-age=0 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.82 Safari/537.1 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: km_ai=Q%2FR9nmmebaNLthhixes8jxMubzQ%3D; km_uq=; kvcd=1346083163009; km_vs=1; km_lv=1346083163 

Réponse:

HTTP/1.1 200 OK 
Server: nginx/1.2.3 
Date: Sun, 26 Aug 2012 06:20:46 GMT 
Content-Type: text/html; charset=utf-8 
Transfer-Encoding: chunked 
Connection: keep-alive 
Vary: Accept-Encoding 
X-Powered-By: Express 
Cache-Control: public, max-age=0, must-revalidate, proxy-revalidate 
Expires: Thu, 01 Jan 1970 00:00:00 GMT 
ETag: "2e26404f4306e4d2a7c821f537aa3e714d655d260462f8a7fdd9f0a8ad501900" 
Set-Cookie: connect.sid=rPrRyvqf3LhbilN0syPU3htr.776UPuqojSyF1YgS0AFcyac4qQtv%2FXF9TFSHQ96p6e8; path=/; expires=Sun, 26 Aug 2012 10:20:46 GMT; httpOnly; secure 
Content-Encoding: gzip 

Edit: j'oublié de mentionner dans mon post initial, mais Firefox n'a pas de problème mettre en cache la page.

Répondre

1

Votre réponse a ces en-têtes -

Cache-Control: public, max-age = 0, doit-revalidate, proxy revalider

Expire: Jeu 1 janvier 1970 00: 00:00 GMT

Enlevez ces en-têtes et vous devriez être bon.

Pour votre information:

  1. doit-revalidate force le navigateur pour faire une demande à chaque fois que la ressource est la demande
  2. tête Expires et max-age = 0 indiquent au navigateur de ne pas mettre en cache la ressource
+0

Merci pour la réponse rapide! J'ai essayé de supprimer ces deux en-têtes, mais le navigateur ne mettra toujours pas en cache le contenu ou n'enverra pas d'en-tête "If-None-Match". Pour ce qui est de la raison pour laquelle j'ai essayé le revalidation du must, les pages rendues sont dynamiques et changent de façon sporadique - je veux sauvegarder la bande passante en ne servant pas une page inutilement, tout en vérifiant si une page est fraîche à chaque requête. –

Questions connexes