Header apa yang harus saya kirim untuk langsung menghentikan semua permintaan ke server setelah konten di-cache?
Kami memiliki server latensi yang sangat tinggi (Sigh, VMWare) sehingga bahkan mengirim HEAD
permintaan ke server membutuhkan + 40ms.
Saat ini adalah tajuk yang dikirim / diterima;
Permintaan pertama
Klien mengirim;
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
Server merespons;
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
Jadi ia mengirim Cache-Control
dan Expires
mengatur header ke 365 hari di masa depan. Sayangnya pada refresh kedua ia meminta objek lagi dengan If-Modified-Since
header.
Permintaan kedua
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
Tanggapan;
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
Sayangnya karena perangkat lunak proxy usang konyol yang tidak dapat kita gunakan Keep-Alive
, atau letakkan server / proksi lain di depan aplikasi. Kami juga tidak dapat meningkatkan kinerja server dan mengurangi latensi jaringan. Saya sudah mencoba mencari tahu header apa yang bisa kami kirim untuk menyingkirkan 301 permintaan. Saya sudah mencoba menggunakan ETags tetapi tidak ada bedanya, masih mengirimkan If-modified-since
header. Saya juga mencoba menghapus Last-Modified
tajuk tetapi itu hanya menyebabkan permintaan GET standar tanpa caching (Memeriksa log, server masih menerima permintaan).
Klien adalah campuran dari Firefox (sebagian besar), IE 7, 8 dan (beberapa) 9, Chrome dan Safari tetapi perilaku ini tampaknya muncul di semua browser yang diuji.
TL; DR;
Jaringan yang mengerikan, tajuk apa yang harus saya kirim untuk memberi tahu klien agar tidak pernah mengirim If-modified-since
permintaan ke server untuk memvalidasi cache mereka, dan menyimpan konten di-cache hingga Expires
header terpenuhi?
Saya mungkin kehilangan sesuatu yang jelas tetapi semua yang saya coba tampaknya menghasilkan hasil yang sama.
Kami memiliki server NGINX di depan server aplikasi kami sehingga saya dapat menambah / menghapus header apa pun sesuka saya. Proksi kami tidak mendukung Keep-Alive dan tidak ada cara untuk meningkatkan kinerja jaringan yang keras. Karena desain perangkat lunak yang mengerikan aplikasi web memuat 100 sumber daya pada setiap pemuatan halaman (Ya, perangkat lunak perusahaan menyebalkan) dengan latensi ~ 40-50ms per objek.
text/plain
?