2011-01-25 3 views
6

Возможно ли каким-то образом заставить ответ 200 (кеш) вместо 304, не измененного для статических файлов? Если это так, вы могли бы сэкономить много запросов на сервер и ускорить время загрузки для возвращающихся посетителей.Nginx - «force» 200 ответ на кеш вместо 304

ответ

1

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

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

+0

у меня истекает срок установлен 2-х недель, но Dev инструментов Google Chrome по-прежнему показывают 304 запросов вместо 200 кодов. Это ложная информация? – ustun

4

Я нашел, что Истекает не правильно задает поведение. Ниже был уверен, что пожар:

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

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

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

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

200 - запрос сервера - передача OK 200 (кэш) - OK - запрос не сервер (из кэша) 304 - запрос сервера - нет передачи (не модифицируется)

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

0

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

EDIT: 200 в некоторых случаях означает, что ресурс был взят из кэша с успехом ...

Смежные вопросы