Заголовок If-None-Match не отправляется браузерами - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь исправить производительность веб-приложения из-за интенсивной загрузки файлов при каждом входе в систему.Для этого я хочу включить условное кэширование в браузере, то есть, если ETag изменится, подать новую копию с сервера, иначе использовать кеш браузера.

Заголовки ответа, отправляемые с сервера через фильтр Java:

HTTP/1.1 200 OK
Cache-Control: max-age=25200, s-maxage=25200, private, must-revalidate
Date: Thu, 04 Apr 2019 15:12:28 GMT
Pragma: no-cache
Accept-Ranges: bytes
Content-Length: 875914
Content-Type: text/javascript
Last-Modified: Thu, 04 Apr 2019 12:05:21 GMT
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000; includeSubDomains
ETag: 040419095614
Cookie: JSESSIONID=*******; secure; HttpOnly
X-Frame-Options: SAMEORIGIN

При следующем вызове через браузер отправляются заголовки запроса:

GET ***.js HTTP/1.1
Host: *****
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
Accept: */*
Referer: *****
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: JSESSIONID=*********

Нет Если-Не совпадает заголовок, отправляемый браузером, и, следовательно, код на стороне сервера для проверки ETag и отправки кода ответа 304 не выполняется, и всегда свежая копия отправляется сервером клиенту.

Я пыталсядругой заголовок Cache-Control, например:

Cache-Control: no-cache, must-revalidate, max-age=0  

, но безрезультатно.Может кто-нибудь, пожалуйста, помогите.Также очень важно, чтобы веб-приложение обслуживало свежий контент всякий раз, когда меняется ETag.

1 Ответ

0 голосов
/ 04 апреля 2019

Ваш ETag недействителен, поскольку в нем отсутствуют двойные кавычки, требуемые спецификацией .Попробуйте:

ETag: "040419095614"
...