Я хочу реализовать хороший механизм кэширования, используя ETag .(Перезагрузите ресурс с сервера, если какой-либо файл js, image, CSS изменился, вместо того, чтобы брать его из кэша браузера)
Я настроил мой .htaccess
файл для включения ETag.( Источник )
FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch "\.(jpg|gif|png|css|js|html)$">
ExpiresActive on
ExpiresDefault "access plus 1 year"
</filesmatch>
</ifmodule>
Я использую Anuglar JS.
Данный код частично работает.
При первой перезагрузке все работает нормально и получает новый ресурс.Когда я снова обновляю страницу, он дает 304 (не измененный) код ответа.Как только я изменяю js-файл, он снова считывает его с сервера (поэтому мой ETag в этом случае работает нормально для JS).
Моя проблема в том, что приведенный выше код работает нормально только для JS.Если я пытаюсь изменить HTML или изображение (JPG), то браузер всегда читает из кэша, даже если я изменяю фактический HTML-файл.
У меня уже есть некоторые существующие настройки в .htaccess
, которые яя не уверен, что мне нужно удалить это, чтобы включить ETag или нет.
(mod_expires имеет более высокий приоритет, чем mod_headers?)
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!)
ExpiresByType image/x-icon "access plus 1 week"
# HTML components (HTCs)
ExpiresByType text/x-component "access plus 1 month"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web feeds
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
# Web fonts
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
</IfModule>
Любая помощь?
Спасибо