Можно ли установить «Cache-Control: public» при отправке «304 Not Modified» для изображений, хранящихся в хранилище данных - PullRequest
9 голосов
/ 02 мая 2010

Задав вопрос о отправке «304 Not Modified» для изображений, хранящихся в хранилище данных Google App Engine , у меня теперь есть вопрос о Cache-Control.

Мое приложение теперь отправляет Last-Modified и Etag, но по умолчанию GAE также отправляет Cache-Control: no-cache. Согласно этой странице :

Директива no-cache, в соответствии с RFC, сообщает браузеру, что это должен пройти повторную проверку с сервером перед обслуживанием страницы из кэш. [...] На практике IE и Firefox начал лечить директива no-cache, как будто она инструктирует браузер, чтобы даже не кэшировать стр.

Поскольку я хочу, чтобы браузеры кэшировали изображение, я добавил следующую строку в мой код:

self.response.headers['Cache-Control'] = "public"

По той же странице, что и раньше:

Директива cache-control: public [...] сообщает браузеру и прокси [...] что страница может быть кэширована. Это хорошо для нечувствительных страниц, как кэширование улучшает производительность.

Вопрос в том, может ли это быть как-то вредно для приложения? Было бы лучше отправить Cache-Control: must-revalidate, чтобы «заставить» браузер выполнить повторную проверку (я полагаю, именно это поведение изначально было причиной отправки Cache-Control: no-cache)

Эта директива настаивает на том, чтобы браузер должен заново подтвердить страницу против сервера перед его обслуживанием из кеша. Обратите внимание, что это неявно позволяет браузеру кэшировать страницу.

Ответы [ 3 ]

1 голос
/ 06 мая 2010

См. http://www.kyle -jensen.com / proxy-caching-on-google-appengine , дает хорошее объяснение настройки заголовков управления кэшем для GAE.

1 голос
/ 03 мая 2010

Нет необходимости устанавливать Cache-Control: public, если ваш контент не защищен HTTP-аутентификацией или SSL.

Попробуйте установить Cache-Control: max-age=nn (где nn - целое число секунд, для которых вы хотите, чтобы кэши считали ответ свежим). AppEngine должен удалить без кеша.

0 голосов
/ 04 мая 2010

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

...