Почему 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 ближе к производственному поведению, но все еще есть некоторые небольшие различия в сгенерированных заголовках.