如何使用Expires指令设置图片缓存

如何使用Expires指令设置图片缓存,第1张

使用.htaccsee来强制浏览器缓存,主要使用ExpiresActive系列指令。 这套指令包括以下三个指令:ExpiresActive:模块开关 ExpiresByType:按类型缓存 ExpiresDefault:默认缓存 其中,ExpiresActive是必须开启的,然后选择第二或第三个指令来决定如何缓存。我推荐使用的是ExpiresByType,即按文件的不同类型来设置缓存。如我这次优化后的论坛,其缓存部分是这么写的:ExpiresActive on

ExpiresByType text/css M78844000

ExpiresByType text/javascript M78844000

ExpiresByType image/gif M78844000

ExpiresByType image/jpeg M78844000

ExpiresByType image/png M78844000

ExpiresByType application/x-javascript M78844000ExpiresDefault的作用就是设置默认缓存值,无论什么类型的文件,都会先按照ExpiresDefault的设置进行缓存,之后如果有ExpiresByType设置,则按照ExpiresByType进行缓存。通常html/text类型是不需要缓存的,因此ExpiresDefault使用的比较少,但也有部分网站将ExpiresDefault设置成较小的值,如1分钟、30秒之类的来提升网站的速度。

主要重点在于我们要明白一个相对(Expires)一个绝对(max-age)

分别

max-age

max-age是HTTP/1.1中,他是指我们的web中的文件被用户访问(请求)后的存活时间,是个相对的值,相对Request_time(请求时间).

例如:A.html 用户请求时间是18:00,max-age设置的是600的话,相当18:00+600秒过期,也就是相对18:00的时间后面600秒后过期.默认的max-age是由Expires算出来的.

Expires

Expires是HTTP/1.0中的,它比max-age要麻烦点.Expires指定的时间分下面二种,这个主要考虑到apache中设置是A还是M.

1.相对文件的最后访问时间(Atime)

当Apache使用A时间来做Expires时.这样设置时.他就和max-age的值相等,因为max-age是相对文件的请求时间(Atime).

例如:ExpiresByType text/html A600

由上面我们得知,Apache设置Atime时,过期为600秒时.

Expires=18:00+600=18:10

max-age=18:00+600=18:10

得出:Expires=max-age

2.绝对修改时间(MTime)

这又分二种情况,我们来拿A.htm来讲

假设文件的建立时间为18:00.

当用户Request请求为18:00时,过期为600秒

Expires=18:00+600=18:10

max-age=18:00+600=18:10

得出:Expires等于max-age

当用户Request请求为18:20时,过期为600秒

Expires=18:00+600=18:10(因为设置成Mtime时,时间由文件建立时间来决定)

max-age=18:20+600=18:30

得出:Expires不等于max-age

另外要注意,象上面这种情况时,max-age优化,所以过期时间为18:30.

在squid,如果没有指明expires和max-age这二个的截止时间,那它就会使用发式截止时间,如参考 Last-Modified.

其实上面的max-age=18:20+600=18:30,这样算max-age不对,真实环境要这样算,max-age过期为http头中的Age=600过期.

注:Age阈值是缓存服务器估计从响应产生或被原始服务器重新证实以来的总时间.age的值是缓存服务器算出来的,原始服务器是没有的.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7703757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存