Спасибо. Самый полезный
м приложении GAE у меня есть следующий обработчик в app.yaml:
- url: /lang/strings.js
script: js_lang.py
Так что призыв к/lang/strings.js
будет фактически отображаться в обработчик запросов js_lang.py, который заполняет ответ какapplication/javascript
, Я хочу, чтобы этот ответ кэшировался в браузере, чтобы обработчик запросов вызывался только время от времени (например, когда я «аннулировал» кэш путем импорта/lang/strings.js?v=xxxx
когда я разверну новую версию приложения.
Для нормального статического контента естьdefault_expiration
элемент, который очень удобен. И приводит к http заголовкам ответа, как это:
Expires: Fri, 01 Apr 2011 09:54:56 GMT
Cache-Control: public, max-age=600
Хорошо, вопрос: есть ли простой способ для меня, чтобы возвратить заголовки, такие как этот, без необходимости явно устанавливать их? В качестве альтернативы, есть ли фрагмент кода, который принимает несколько основных параметров, таких как «days», и производит ожидаемые http-заголовки?
Изменить 12 апреля 2011
Я решил это очень просто установив два заголовкаExpires
а такжеCache-Control
нравится:
import datetime
thirty_days_in_seconds = 4320000
expires_date = datetime.datetime.now() + datetime.timedelta(days=30)
HTTP_HEADER_FORMAT = "%a, %d %b %Y %H:%M:00 GMT"
self.response.headers["Expires"] = expires_date.strftime(HTTP_HEADER_FORMAT)
self.response.headers["Cache-Control"] = "public, max-age=%s" % thirty_days_in_seconds