내용을 캐시 한 후 서버에 대한 모든 요청을 완전히 중지하기 위해 어떤 헤더를 보내야합니까?
대기 시간이 매우 긴 서버 (Sigh, VMWare)가 있으므로 HEAD
서버에 요청을 보내는 데에도 40ms가 걸립니다.
현재 이들은 송수신되는 헤더입니다.
첫 번째 요청
고객이 보낸다.
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Pragma: no-cache, no-cache, no-cache
Cache-Control: no-cache, no-cache, no-cache
서버가 응답합니다.
HTTP/1.1 200 OK
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:51:51 GMT
Content-Type: text/plain
Vary: Accept-Encoding
Last-Modified: Tue, 31 Jan 2012 10:45:11 GMT
Content-Length: 14
Expires: Thu, 31 Jan 2013 14:51:51 GMT
Cache-Control: max-age=31536000
따라서 앞으로 365 일로 설정된 Cache-Control
및 Expires
헤더를 보냅니다 . 불행히도 두 번째 새로 고침에서는 If-Modified-Since
헤더로 객체를 다시 요청합니다 .
두 번째 요청
GET http://dugong:8080/Rvi24mYJkxFRGNzq73PPvgWGh1j/IMG_2071.jpg HTTP/1.1
Host: dugong:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20100101 Firefox/9.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
If-Modified-Since: Tue, 31 Jan 2012 10:45:11 GMT
Cache-Control: max-age=0
응답;
HTTP/1.1 304 Not Modified
Server: nginx/1.0.11
Date: Wed, 01 Feb 2012 14:58:00 GMT
Vary: Accept-Encoding
Expires: Thu, 31 Jan 2013 14:58:00 GMT
Cache-Control: max-age=31536000
불행히도 오래된 프록시 소프트웨어로 인해 Keep-Alive
응용 프로그램 앞에을 (를) 사용 하거나 다른 서버 / 프록시를 사용할 수 없습니다 . 또한 서버 성능을 향상시키고 네트워크 대기 시간을 줄일 수 없습니다. 301 요청을 제거하기 위해 보낼 수있는 헤더를 알아 내려고 노력했습니다. ETags를 사용해 보았지만 아무런 차이가 없지만 여전히 If-modified-since
헤더를 보냅니다 . 또한 Last-Modified
헤더를 제거하려고 시도했지만 캐싱없이 표준 GET 요청이 발생합니다 (로그를 확인하고 서버는 여전히 요청을 수신합니다).
클라이언트는 Firefox (주로), IE 7, 8 및 (일부) 9, Chrome 및 Safari의 혼합이지만이 동작은 테스트 된 모든 브라우저에서 나타나는 것으로 보입니다.
TL; DR;
끔찍한 네트워크, 클라이언트에게 캐시를 확인하기 위해 절대로If-modified-since
서버에 요청을 보내지 않고Expires
헤더가 충족 될 때까지 콘텐츠를 캐시로 유지 하지 말라고 보내려면 어떤 헤더를 보내야 합니까?
아마도 분명한 것이 누락되었지만 시도하는 모든 결과가 동일한 결과를 얻는 것처럼 보입니다.
우리는 응용 프로그램 서버 앞에 NGINX 서버가 있으므로 원하는대로 헤더를 추가 / 제거 할 수 있습니다. 프록시는 Keep-Alive를 지원하지 않으며 부실한 네트워크 성능을 향상시킬 수있는 방법이 없습니다. 끔찍한 소프트웨어 디자인으로 인해 웹 응용 프로그램은 각 페이지로드 (예 : 엔터프라이즈 소프트웨어 짜증)에 +100 개의 리소스를 객체 당 ~ 40-50ms의 대기 시간으로로드합니다.
text/plain
무엇입니까?