Які заголовки мені слід надсилати, щоб остаточно зупинити всі запити на сервері після кешування вмісту?
У нас дуже високий рівень затримки (Sigh, VMWare), тому навіть відправка HEAD
запиту на сервер займає + 40 мс.
В даний час це заголовки, що надсилаються / приймаються;
Перший запит
Клієнт відправляє;
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
Таким чином , він посилає Cache-Control
і Expires
набір заголовків 365 днів в майбутньому. На жаль, при другому оновленні він знову запитує об'єкт із 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-50мс на об'єкт.
text/plain
?