在HTTP中缓存

html jingsiyu 117℃ 0评论
HTTP再设计时就考虑到了缓存。最熟悉的就是浏览器缓存,但同样存在其他类型的缓存代理,并且他们也遵循相同的规范。控制HTTP缓存的方式有以下三种:
1、新鲜度(Freshness)
新鲜度,有时也被称为TTL(生存时间),是最简单的方式。使用报头,缓存代理会被告知在保持状态和重新获取新内容之前,需要缓存保留该资源多长时间。最简单的处理方法是使用Expires报头。这样做的目的就是那些所谓的静态资源(CSS和Javascript)如果可以的话不用再次获取。YSlow建议你将过期时间设为非常救援的未来的某个时间如:Expires:Thu,15 Apr 2030 20:00:00 GMT
2、验证(Validation)
验证为缓存代理提供了一种无需请求完整资源就能确定一个旧的缓存是否可用的方法。浏览器可以发送一个包含IF-Modified-Since报头的请求。如果服务器上的文件没有发生改变服务器就会发送一个304 Not Modified的响应,这样浏览器就会使用缓存已存在的文件,而不是从服务器重新获取。
另一个验证功能是ETag。ETag是一种唯一标识符,一般通过哈希算出。它指需要比较一段简短的字符,就能在没有日期信息的情况下验证缓存是否与服务器上的文件相同。七牛代理会创建一个有附加条件的请求,并加入IF-Modified-Match报头,它包含了ETag。如果服务器上当前内容能匹配客户的ETag,则服务器会再次返回一个304响应。
验证缓存响应在客户端与服务器之间进行一次往返,虽然比重新下载一个文件要好,但不进行这次往返会更好,这也是要设置较长的过期时间的原因。
3、失效(Invaldation)
某些操作执行后浏览器会让缓存项失效,最常见的是创建指向相同URL的非GET请求。
null

转载请注明:前端随笔 » 在HTTP中缓存

喜欢 (0)

Warning: copy(/www/users/HA289308/WEB/avatar/.png) [function.copy]: failed to open stream: No such file or directory in /www/users/HA289308/WEB/wp-content/themes/yusi1.0/functions.php on line 234

Warning: filesize() [function.filesize]: stat failed for /www/users/HA289308/WEB/avatar/.png in /www/users/HA289308/WEB/wp-content/themes/yusi1.0/functions.php on line 237

Warning: copy(/www/users/HA289308/WEB/avatar/.png) [function.copy]: failed to open stream: No such file or directory in /www/users/HA289308/WEB/wp-content/themes/yusi1.0/functions.php on line 238
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址