У меня есть приложение Flask в Google App Engine, и я хочу сказать браузеру кэшировать ответ, который использует заголовок Cache-Control
. Он работает, как ожидалось, на dev_appserver.py
, но при развертывании в App Engine заголовки изменяются и разбиваются на заголовок кэша.Google App Engine добавляет кеш-контроль и другие заголовки
Вот вид Колба, в частности:
@app.route("/resource")
def resource():
response = make_response(render_template("resource.html"))
response.headers['Cache-Control'] = "max-age=31536000"
logging.error("HEADERS: {}".format(response.headers))
return response
Бревна для сервера разработки и App Engine шоу:
Content-Type: text/html; charset=utf-8
Content-Length: 112628
Cache-Control: max-age=31536000
Когда я запускаю его с сервером приложений разработки он работает, как ожидалось , как вы можете видеть из заголовков ниже.
Когда я открываю средства разработки Chrome в заголовки для App Engine являются:
alternate-protocol:443:quic
cache-control:no-cache, must-revalidate
content-encoding:gzip
content-length:19520
content-type:text/html; charset=utf-8
date:Wed, 22 Jan 2014 19:53:47 GMT
expires:Fri, 01 Jan 1990 00:00:00 GMT
pragma:no-cache
server:Google Frontend
set-cookie:session=; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
status:200 OK
strict-transport-security:max-age=31536000
vary:Accept-Encoding
version:HTTP/1.1
x-appengine-estimated-cpm-us-dollars:$0.002267
x-appengine-resource-usage:ms=7388 cpu_ms=5069
x-frame-options:DENY
x-ua-compatible:chrome=1
В отличие от заголовков сервера приложений развития являются, как ожидалось:
Cache-Control:max-age=31536000, private
Content-Length:112628
content-type:text/html; charset=utf-8
Date:Wed, 22 Jan 2014 19:57:05 GMT
Expires:Wed, 22 Jan 2014 19:57:05 GMT
Server:Development/2.0
set-cookie:session=; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
x-frame-options:DENY
x-ua-compatible:chrome=1
Конечно, я проверил, чтобы убедиться, что я не добавляю дополнительные заголовки, и я не мог найти ссылки на связанные с кешем заголовки (pragma
, expires
и cache-control
), которые добавляются за пределами данного вида.
Так что, кажется, App Engine добавляет кучу заголовков при развертывании, что кажется необычным. Что я мог упустить?
- EDIT -
Как @dinoboff noted from the docs in a comment below:
Cache-Control, Истекает и Варах
Эти заголовки указать политику кэширования для промежуточных прокси-серверов (например, Интернет-провайдеры) и браузеров. Если ваш скрипт устанавливает эти заголовки, они обычно будут немодифицированы, , если у ответа нет заголовка Set-Cookie или не создается для пользователя, который выполнил вход, используя учетную запись администратора.
IIRC Я думаю, что некоторые из них (x-app) связаны с тем, что вы просматриваете его как зарегистрированный пользователь admin? –
@PaulCollingwood: Я думаю, что вы попали в ответ - когда я пытаюсь использовать страницу как не-администратора, я получаю ожидаемый результат.Не стесняйтесь публиковать как ответ, и я буду отмечать его правильно. –
звучит хорошо, рад помочь :) –