2015-08-04 2 views
0

Я запускаю приложение в Express, и мой браузер продолжает извлекать файлы, которые должны были уже кэшироваться. Код состояния для файлов-нарушителей - 304, а размер - 220 B/221 B. Другие ресурсы (которые получают надлежащее обслуживание) показывают «(из кеша)».Express JS - Статические файлы, не обслуживаемые из кеша

Немного больше информации: содержимое ETags/file не изменилось, и я установил некоторые заголовки ответов.

res.set('Cache-Control', 'max-age=345600'); 
    res.set('Expires', new Date(Date.now() + 345600000).toUTCString()); 

Cache Fail http://www.imageno.com/image.php?id=mekl0pw40qr5&kk=619682137

Правда, я не эксперт по HTTP, но, возможно, кто-то может помочь мне понять, почему это может происходить?

ответ

0

По сути, браузер IS кэширует и обслуживает кэшированные пакеты (хотя он не отображает сообщение «из кэша»). Чтобы обслуживать их, он отправляет запрос на сервер и проверяет, изменился ли файл. Если он не изменился, сервер отправляет код ответа 304, и браузер вытаскивает файл из кеша. Это занимает около 15-50 мс, поэтому это не оказывает существенного влияния на производительность.

Однако я МОЖЕТ заставить браузер отображать файл, не отправляя запрос проверки (например, внешние библиотеки, например, на стороне). Для этого потребуется установить устаревшие заголовки/кеш-файлы для далекого будущего, штамповать имена файлов для статических активов и динамически обслуживать их (возможно, записывая обновленные имена файлов в файл конфигурации или что-то в этом роде), но я думаю, что это будет больше проблем, чем это стоит честно.

Просто отправьте этот ответ всем, кто сталкивается с тем же вопросом.

Смежные вопросы