我想使用ETag实现良好的缓存机制。 (如果更改了任何js,图像,CSS文件,而不是从浏览器缓存中获取,请从服务器重新加载资源
我已将.htaccess
文件配置为启用ETag。 (Source)
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>
有帮助吗?
谢谢