zoukankan      html  css  js  c++  java
  • 浏览器缓存

    浏览器缓存主要有两类
      缓存协商:Last-midified ,Etag
      彻底缓存:cache-control,Expires

    缓存协商
      缓存协商的意思是需要去服务器端询问页面有没有修改过,没有修改过则返回304直接使用缓存内容,否则返回新内容
      协商步骤:
      服务器发送带Last-midified:GMTtime 头的http response
      浏览器下次请求时带上if-modified-since:GMTtime http 请求头
      服务端用本地Last-midified时间与if-modified-since比较,计算浏览器数据是否过期并发送响应
      Etag的工作原理与Last-midified类似,不同点在于Etag的值是用户可自定义的
      缓存协商可应用在动态页面且实时性不是特别强的页面,如网站首页

     
    彻底缓存
      彻底缓存的意思是在缓存失效之前不再需要跟服务器交互
      常用的是Expires,Expires的值是一个绝对时间,由服务器产生
      这儿存在一个问题,就是服务器的时间可能给客户端的时间不一致导致缓存时间的偏差
      要解决这个问题就要使用cache-control,它保存的是一个相对浏览器的时间
      如果同时存在cache-control和Expires怎么办呢?
      浏览器总是优先使用cache-control,如果没有cache-control才考虑Expires

    浏览器缓存最大的价值是节省了带宽
      为什么没有提高吞吐率呢? 下面来分析一下
      这里分两种情况:静态页面和动态页面
      服务端加载静态页面需要进行磁盘IO,浏览器缓存则可节省这部分时间,不过服务器一般会用squid等工具进行缓存,所以静态资源在提高吞吐率方面效果不明显
      再来看一看动态资源
      动态资源也分为两类:实时动态和准实时动态
      实时动态是不能用浏览器缓存的
      准实时动态页面可节省磁盘IO和计算时间,但是让浏览器缓存的时间不可太久,且在本地重复访问的概率也不大
      所以说动态内容在提高吞吐率方面效果也不明显
      对于准实时动态页面倒是可以缓存在服务端,如squid

  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/onlywujun/p/2829133.html
Copyright © 2011-2022 走看看