我使用Tomcat作为服务器,使用Internet Explorer 6作为浏览器。我们的应用程序中的网页有大约75张图片。我们正在使用SSL。加载所有内容似乎很慢。如何配置Tomcat以便IE缓存图像?
答案 0 :(得分:10)
如果您通过https提供页面,则需要通过https(来自同一域或其他域,也可以通过https)提供所有包含的静态或动态资源,以避免浏览器中出现安全警告
大多数浏览器默认不会将通过安全通道传送的内容写入磁盘,因此存在于浏览器内存缓存中,这比磁盘缓存小得多。当应用程序退出时,此缓存也会消失。
尽管如此,您可以采取一些措施来改善单个浏览器设置中SSL资产的可扩展性。对于初学者,请确保所有资产都具有合理的Expires和Cache-Control标头。如果tomcat位于apache后面,那么使用mod_expires添加它们。这将避免浏览器必须检查图像是否在页面之间发生了变化
<Location /images>
FileEtag none
ExpiresActive on
ExpiresDefault "access plus 1 month"
</Location>
其次,这是MSIE和Apache特有的,大多数apache ssl配置都包含这些行
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
禁用所有MSIE代理的keepalive。恕我直言这太保守了,最后使用SSL的问题的MSIE浏览器是5.x和6.0 SP2的未修补版本,现在两者都非常罕见。以下是更宽松的,并且在使用MSIE和SSL时不会禁用keepalive
BrowserMatch "MSIE [1-4]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [5-9]" ssl-unclean-shutdown
答案 1 :(得分:5)
某些浏览器会缓存SSL内容。默认情况下,Firefox 2.0+不会在磁盘上缓存SSL资源(以增加隐私)。除非出现Cache-control:public标头,否则Firefox 3+不会将它们缓存在光盘上。
因此,正确设置Expires:标头,并设置Cache-control:public。 e.g。
<Files ~ "\.(gif|jpe?g|png|ico|css|js|cab|jar|swf)$">
# Expire these things
# Three days after access time
ExpiresDefault "now plus 3 days"
# This makes Firefox 3 cache images over SSL
Header set Cache-Control public
</Files>
答案 2 :(得分:4)
如果这75个图像中的很多是每个页面上出现的图标或图像,您可以使用CSS精灵大幅减少HTTP请求的数量,从而加快页面加载速度:
答案 3 :(得分:2)
答案 4 :(得分:-1)
通过HTTPS连接提供的内容永远不会在浏览器中缓存。你无能为力。
通常,您网站中的图片不是非常敏感,并且出于这个原因通过HTTP提供服务。
答案 5 :(得分:-1)
第一个答案是正确的,使用HTTPS时没有缓存任何内容。但是,在构建网页时,您可以考虑通过各自的URL来引用图像。这样,您可以将图像指定为源自HTTP源,并且它们(可能)将被浏览器缓存。
答案 6 :(得分:-1)
也许你可以添加一个额外的服务器/子域来提供没有https的图像?