Почему GAE dev_appserver только устанавливает ETag, но не истекает HTTP-заголовок?

Структура файлов и папок

У меня есть следующая структура каталогов.

[App_root]
|
|---[статические]
    |
    |--- [css]
    |--- [img]
    |--- [JS]
         | --- [приложение]
         |--- [libs]
         |--- main.js
         |--- require.js

app.yaml

app.yaml конфиг для static_dir обработчики установлены на разное время истечения.

application: my-app-name
version: 1
runtime: python27
api_version: 1
threadsafe: true

default_expiration: "10d"

handlers:
- url: /favicon\.ico
  static_files: static/img/favicon.ico
  upload: static/img/favicon\.ico
  expiration: "364d"

- url: /static/img
  static_dir: static/img
  expiration: "364d"
  http_headers:
    X-Static-Img: Moo1

- url: /static/css
  static_dir: static/css
  expiration: "15m"
  http_headers:
    X-Static-Css: Moo2

- url: /static/js/app
  static_dir: static/js/app
  expiration: "15m"
  http_headers:
    X-Static-Js-App: Moo4

- url: /static/js/libs
  static_dir: static/js/libs
  expiration: "7d"
  http_headers:
    X-Static-Js-Libs: Moo5

- url: /static/js
  static_dir: static/js
  expiration: "15m"
  http_headers:
    X-Static-Js-Root: Moo3

- url: /static
  static_dir: static
  expiration: 12d
  http_headers:
    X-Static-ROOT: MOOOOOOOOOOO COW

Заголовки HTTP

/ static / css - впервые

 URL запроса:http://localhost:8080/static/css/bootstrap.min.css
Метод запроса:GET
Код состояния:200 ОК

======================
   Заголовки запроса
======================
Accept: текст / CSS,*/*; д = 0,1
Accept-Charset:ISO-8859-1, UTF-8; д = 0,7,*; д = 0,3
Accept-Encoding: GZIP, выкачать, SDCH
Accept-Language: EN-US, ан; д = 0,8
Подключение: держать-жив
Cookie:dev_appserver_login="test@admin.com:True:113617613220115205203"
DNT:1
Ведущий: локальный:8080
Referer: HTTP: // локальный: 8080 /
Пользователь-агент:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, как Gecko) Chrome /26.0.1410.65 Safari / 537.31

======================
   Заголовки ответа
======================
Cache-Control: нет кэша
Content-Length:103314
Content-тип: текст / CSS
Дата: понедельник, 06 мая 2013 г. 17:46:22 GMT
ETag:"MTgwMTU4MDk3NA=="
Истекает: пт, 01 января 1990 00:00:00 по Гринвичу
Сервер: Разработка /2,0
X-Static-Css: Moo2

/ static / css - последующие запросы

 URL запроса:http://localhost:8080/static/css/bootstrap.min.css
Метод запроса:GET
Код статуса:304 Не изменен

======================
   Заголовки запроса
======================
Accept: текст / CSS,*/*; д = 0,1
Accept-Charset:ISO-8859-1, UTF-8; д = 0,7,*; д = 0,3
Accept-Encoding: GZIP, выкачать, SDCH
Accept-Language: EN-US, ан; д = 0,8
Cache-Control: макс возраста = 0
Подключение: держать-жив
Cookie:dev_appserver_login="test@admin.com:True:113617613220115205203"
DNT:1
Ведущий: локальный:8080
If-None-Match:"MTgwMTU4MDk3NA=="
Referer: HTTP: // локальный: 8080 /
Пользователь-агент:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, как Gecko) Chrome /26.0.1410.65 Safari / 537.31

======================
   Заголовки ответа
======================
Дата: понедельник, 06 мая 2013 г. 17:53:20 GMT
ETag:"MTgwMTU4MDk3NA=="
Сервер: Разработка /2,0

проблема

По первому запросу, Expires заголовок установлен в Fri, 01 Jan 1990 00:00:00 GMT в прошлом.
Я предполагаю, что это должно быть установлено в "15m" в будущее, по крайней мере, на основе app.yaml,

Но все последующие запросы используют только ETag чтобы получить HTTP 304 Not Modified,
Expires заголовок полностью отсутствует.

Я делаю что-то неправильно?

Спасибо,
Soe

1 ответ

Что-то не так с dev_appserver2. Я вижу то же самое, что и вы.

Когда я использую старый dev_appserver, мой работает с правильным заголовком expires при первом запросе, но я не устанавливаю никаких дополнительных заголовков.

Хотя я и не вижу истечения срока действия в ответе 304, но это, похоже, нормально.

Старый dev_appserver ближе к производственному поведению, но все еще есть некоторые небольшие различия в сгенерированных заголовках.

Другие вопросы по тегам