@ Tinister:
Ну, на самом деле, что вы делаете, это иметь дело с условным GET
То есть - когда запрос Get переходит от клиента к серверу, спрашивая «есть ли у вас что-то новее, чем X», и сервер говорит 304, если нет.
вы избегаете сервера, генерирующего js, и трафика содержимого js, однако стоимость запроса (то есть отправка http-запроса от браузера к серверу) все еще остается.
этот материал обрабатывается заголовками Last-Modified / IfMOdifiedThen (один для ответов, один для запросов) и / или заголовком ETAG.
Кэширование - это совсем другое - браузер решает вообще не отправлять запрос GET. он управляется заголовком «Expires» или заголовком Cache-control.
у вас может быть где-то настраиваемый заголовок Cache-Control, и это заставляет клиента игнорировать «Expires».
Попробуйте установить «max-age 3600» или что-то в этом роде, и посмотрите, кэшируется ли запрос (забудьте о FB - вместо этого установите точку останова или войдите на сервер, чтобы быть уверенным, что он не вызывается)
сказав, что при работе с файлами js / css вы не можете хотеть фактическое кэширование. Это связано с тем, что если браузер решит кэшировать, скажем, на неделю, вы не сможете заставить его перезагрузить новую версию. поэтому, если вы развернете новую версию на сервере, клиент не увидит ее, пока не пройдет неделя, независимо от того, какое время (oe etag) у нового ресурса - потому что он никогда даже не выдаст условный запрос GET .
Одним из решений (если вы действительно хотите избавиться от предубеждений в сети) является настройка кэширования на максимальное время (скажем, год), а при изменении ресурса вы меняете URI (как есть - добавьте произвольное значение строки запроса). это заставит браузер перезагрузить новый ресурс js и больше никогда не беспокоить сервер, по крайней мере до следующего обновления + URI следующего ресурса