浏览器缓存对于SVG图像无效。

5
我在处理SVG文件的浏览器缓存方面遇到了问题。
在我的.htaccess文件中,一切似乎都很正常(至少是相当完整的),但无论我尝试什么,似乎SVG图像都没有进入浏览器缓存。
有一些问题存在。
<IfModule mod_expires.c>
    ExpiresActive On
    ...
    (various other file-types)
    ...
    ExpiresByType image/svg+xml "access plus 1 month"
    ExpiresDefault "access plus 1 month"
</IfModule>

在 .htaccess 文件中,我尝试了:
ExpiresByType image/svg+xml A2592000

我尝试了很多方法,但都没有成功。我也尝试将mime类型更改为text/svg+xml,但仍然不行。

是什么原因导致了这个失败呢?

谢谢。


你有检查响应头中的SVG是否被视为“image/svg+xml”吗? - Val Bonn
嗨,Val!是的,它说“content-type: Image/svg+xml”(并且请求头意味着在“Pragma/Cache-Control: no-cache”下),如果有关于问题来源的提示,那就太好了... - David Braun
1
在你的回应中看到 Image/svg+xml 的大写 "I" 真是太奇怪了。我不知道 MIME 类型是否区分大小写。这可能不是你问题的原因(因为在最坏的情况下,你的 SVG 文件应该被 ExpiresDefault 捕获...),但你可以尝试添加一个 expiresByType Image/svg+xml ... 你有一个 AddType image/svg+xml .svg 指令吗? 你是否查看了 Apache 模块,看看是否有其他关于 SVG 文件的规则? - Val Bonn
2
我必须承认我快要崩溃了... 我怀疑是.htaccess的问题,而不是apache的配置问题。所以我用默认的bootstrap.htaccess替换了我的.htaccess,然后哇!没有缓存投诉了... - David Braun
我有一个类似的情况,但没有设置ExpiresActive。 ExpiresDefault适用于除svg之外的所有文件类型。添加ExpiresActive后,它也适用于svg。但我不知道为什么。 - Ariel Allon
1个回答

0
根据@Ariel的建议,我检查了我的.conf文件,但我仍然遇到了同样的问题,尽管我已经添加了


ExpiresActive on
ExpiresDefault  "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/svg  "access plus 1 month"

即使对于SVG字体而言它也能正常工作(我猜测)。我没有.htaccess文件,所以所有的操作都在.conf文件中完成。顺便提一下,我还有

    <FilesMatch "\.(jpg|png|css|js|swf)$">
     Header unset Cache-Control
    </FilesMatch>

但据我所知,这甚至不会触及SVG文件。谢谢


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接