Nginx - «форсирует» ответ 200 кеша вместо 304 - PullRequest
6 голосов
/ 25 января 2011

Можно ли как-то форсировать ответ 200 (кеш) вместо 304, не модифицированного для статических файлов? В таком случае вы могли бы потенциально сохранить много запросов к серверу и значительно увеличить время загрузки для постоянных посетителей.

Ответы [ 3 ]

4 голосов
/ 29 августа 2013

Я обнаружил, что Expires один не правильно установить поведение. Ниже был верный пожар:

# Set cache
expires 1M;
add_header Pragma public;
add_header Cache-Control "public";

Это происходит в вашем блоке местоположения.

Я также думаю, что есть много вводящей в заблуждение информации об этом .. Эти 200 как-то совпадают с 200 (кеш).

Из моего понимания:

200 - запрос к серверу - передача ОК 200 (кеш) - ОК - нет запроса к серверу (из кеша) 304 - запрос к серверу - без передачи (без изменений)

200 (кеш), как я понимаю, НЕ делает серверный запрос вообще.

1 голос
/ 10 февраля 2011

Установите директиву expires в Nginx в тех местах, где вы храните ваши статические файлы. Браузеры не будут проверять сервер, пока не истечет время. В этот момент сервер все еще может отправить ответ 304, если статический файл не изменился, и время истечения должно быть достигнуто до того, как браузеры снова проверят.

Кстати, код ответа 200 просто означает, что запрашиваемый ресурс возвращается. Это не имеет никакого отношения к тому, отправляются ли какие-либо заголовки кэширования с ответом HTTP или нет.

0 голосов
/ 17 сентября 2014

200 не является ответом кеша;это указывает на успех и требует, чтобы ответ содержал результат.304 указывает неизмененный ресурс;то есть у вас уже есть, так что ничего не возвращается.Таким образом, то, что вы предлагаете, должно привести к тому, что все 304, маскирующиеся под 200, потерпят неудачу.Даже если это не означает, что вы не собираетесь сохранять какие-либо запросы или ускорять работу с поддельными 200 ответами.

РЕДАКТИРОВАТЬ: 200 в некоторых случаях означает, что ресурс был успешно взят из кэша ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...