2012-08-27 3 views
2

저는이 문제에 대한 해결책을 찾고 있었지만 지금까지는 아무것도 찾지 못했습니다. 동적으로 Node.js/Express에서 HTML 페이지를 렌더링하고 SHA256에 의해 HTML 문자열을 해싱하여 ETag를 생성하고 nginx를 통해 페이지를 보냅니다. 어떤 이유로 Google 크롬은 이전 ETag에 대해 "If-None-Match"헤더를 보내거나 캐시하지 않습니다. 여기 Google 크롬은 콘텐츠를 캐시하지 않습니다.

내 요청 및 응답 헤더입니다

요청 :

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 

응답 :

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 

편집 : 내 최초 게시물에 언급하는 것을 잊었다하지만, 파이어 폭스는 문제가 없습니다 페이지 캐싱.

답변

1

귀하의 응답이 헤더가 -

캐시 제어 : 공공, 최대 - 나이 = 0,해야-재 검증이

을 프록시-재 검증하는 것은 만료 : 1970년 1월 1일 (목) 00 : 00:00 GMT

이 헤더를 제거하면 좋을 것입니다.

는 참고 :

  1. 을 수행해야합니다-재 검증이 요청에게 자원이
  2. 헤더 및 최대 연령 = 0 자원
를 캐시하지 않도록 브라우저를 말해 만료 요청을 때마다 확인하기 위해 브라우저를 강제로
+0

빠른 응답을 보내 주셔서 감사합니다. 두 개의 헤더를 제거하려고했지만 브라우저는 여전히 콘텐츠를 캐시하지 않거나 "If-None-Match"헤더를 보냅니다. 왜 내가 재 검증해야하는지, 렌더링 된 페이지는 동적이며 때때로 산발적으로 바뀝니다. 불필요하게 페이지를 제공하지 않음으로써 대역폭을 절약하고 각 요청마다 페이지가 새로운 것인지를 계속 확인합니다. –

관련 문제