İçerik önbelleğe alındıktan sonra sunucuya yapılan tüm istekleri kesin olarak durdurmak için hangi başlıkları göndermeliyim?
Çok yüksek gecikmeli bir sunucumuz (Sigh, VMWare) var, bu yüzden HEAD
sunucuya bir istek göndermek bile + 40ms sürüyor.
Şu anda bunlar, gönderilen / alınan başlıklar;
İlk istek
Müşteri gönderir;
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
Sunucu yanıt verir;
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
Böylece gelecekte 365 güne ayarlanmış bir Cache-Control
ve Expires
başlık gönderir . Maalesef ikinci yenilemede nesneyi bir If-Modified-Since
başlık ile tekrar ister .
İkinci istek
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
Tepki;
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
Ne yazık ki aptal modası geçmiş proxy yazılımı nedeniyle kullanamayız Keep-Alive
veya uygulamanın önüne başka bir sunucu / proxy koyarız. Ayrıca, sunucunun performansını iyileştiremeyiz ve ağ gecikmesini azaltamayız. 301 talebinden kurtulmak için hangi başlıkları gönderebileceğimizi anlamaya çalışıyorum. ETag'leri kullanmayı denedim ama bu bir fark yaratmıyor, yine de bir If-modified-since
başlık gönderiyor . Ayrıca Last-Modified
başlığı kaldırmayı da denedim, ancak bu önbellekleme olmadan standart bir GET isteğine neden oluyor (Günlükleri kontrol ediyor, sunucu hala istek alıyor).
Müşteriler, Firefox (çoğunlukla), IE 7, 8 ve (bazı) 9, Chrome ve Safari’nin bir karışımıdır, ancak bu davranış test edilen tüm tarayıcılarda görünmektedir.
TL; DR;
Korkunç ağ, istemcilere, hiçbir zamanIf-modified-since
sunucuya, önbelleklerini doğrulamak için sunucuya hiçbir zaman istek göndermemelerini ve içeriğin önbelleğe alınmalarını sağlamak için önbelleğe alınmalarını istemem gerektiğini söylemeliyim Expires
?
Muhtemelen bariz bir şeyi özlüyorum ama denediğim her şey aynı sonuçları veriyor gibi görünüyor.
Uygulama sunucumuzun önünde bulunan bir NGINX sunucumuz var, böylece istediğim gibi herhangi bir başlığı ekleyebilir / silebilirim. Proxy'imiz Keep-Alive'ı desteklemiyor ve onların korkunç ağ performansını artırmanın bir yolunu bilmiyor. Kötü yazılım tasarımı nedeniyle, web uygulaması her sayfa yüklemesinde +100 kaynak yükler (Evet, kurumsal yazılım berbat), nesne başına ~ 40-50ms gecikme süresiyle.
text/plain
nedir?