关于缓存

  1. 缓存更新策略

    • FIFO[First In First Out]。最先进入缓存的数据在缓存空间不足情况下最先清理出去
    • LFU[Less Frequenctly Used]。最少被使用的元素被清理掉,需要缓存的元素有hit属性。
    • LRU[Least Recently Used]。最近最少使用的元素被清理,要求缓存的元素有时间戳。
  2. 文件缓存
    优点:

    • 磁盘容量大,可以存放足够多的数据。
    • 磁盘价格远低于内存价格,且更稳定可靠,断电数据不丢失,存储也简单可靠。
    • 随着固态硬盘(SSD)的出现,硬盘读写速度得到极大提高,达到500MB/s。
    • 扩展容易,可以使用磁盘阵列,分布式处理等大规模的存储和管理。

    应用:

    • 模板:把动态的php代码“编译”成静态HTML文件,下次读取时直接读取静态文件(判断静态文件是否过期),不需再“编译”。

    • 无限分类:可以将分类从数据库中读取之后,存入文件中,因分类不常变更,下次直接从文件中读取。

      $a = [
        "a"=>["name"=>"nannan", "age"=>24],
        "b"=>["name"=>"coco", "age"=>22]
      ];
      
      $t = var_export($a, true);
      file_put_contents("a.php", $t);
      
      $array = file_get_contents("a.php");
      eval("\$data=$array;");
      var_dump($data);
      
  3. 客户端缓存(浏览器缓存)
    如果缓存的副本含有一下信息,内容被认为足够新:

    • 含有完整的过期时间和寿命控制头信息,并且内容仍在保鲜期内。
    • 浏览器已经使用过缓存副本,并且在一个会话中已经检查过内容的新鲜度。
    • 缓存代理服务器近期内已经使用过缓存副本,并且内容的最后更新时间在上次使用期之前。
    • 够新的副本将直接从缓存中送出,而不会向源服务器发送请求。
      如果缓存的副本已经太旧了,缓存服务器将向源服务器发出校验请求,用于确定是否可以继续使用当前拷贝继续服务。

    HTTP请求缓存过程:

    1. 在客户端,通过浏览器发出第一次请求,根据HTTP协议规定,浏览器会向服务器传送报头(HTTP Request Header),服务器端响应同时记录相关属性标记(HTTP Reponse Header),服务器端返回格式如下

      HTTP/1.1 200 OK
      Date:Tue,03 Mar 2009 04:58:40 GMT
      Content-Type:image/jpeg
      Content-Length:83185
      Last-Modified:Tue,24 Feb 2009 08:01:04 GMT
      Cache-Control:max-age=2592000
      Expires:Thu,02 Apr 2009 05:14:08 GMT
      Etag:"5d8c72a5edda8d6a:3239"
      
    2. 客户端第二次请求此URL时,服务器端响应请求,并查询到标记文件没有发生改动,服务器端返回304,浏览器收到此状态码后,直接从本地缓存中读取

      HTTP/1.x 304 Not Modified
      Date:Tue,03 Mar 2009 05:03:56 GMT
      Content-Type:image/jpeg
      Content-Length:83185
      Last-Modified:Tue,24 Feb 2009 08:01:04 GMT
      Cache-Control:max-age=2592000
      Expires:Thu,02 Apr 2009 05:14:08 GMT
      Etag:"5d8c72a5edda8d6a:3239"
      

    HTTP请求标识

    • Expires
      过期时间,告诉浏览器相关副本在多长时间是新鲜的,过了这个时间,缓存器向服务器发送请求,检查文档是否被修改。这个字段对静态图片文件等特别有用,因为这些图片修改很少。可以给他们一个特别长的过期时间。
    • Cache Control
      通过该属性,可以全面让网站发布者全面控制内容,并定位过期时间的限制。
      有用的Cache Control信息包括:
      • max age:缓存过期时间 [秒]
      • public: 标记认证内容也可以被缓存,一般经过http认证的内容不会被自动缓存。
      • no cache:强制不缓存。
      • must revalidate:在保鲜期内,如果用到了该资源,应当向服务器确认一下资源是否为最新的。
      • last modified: 文档最后修改时间。第一次访问时,会返回此文件在服务端的最后修改时间,第二次访问时,请求头会带上If-Modified-Since,值为这个最后修改时间,以此判断上次之后,该文件是否修改过。
        如果没有修改,服务器返回304状态,内容为空,否则重新发出资源,并返回新的修改时间。
    • etag: 和last modified一样起到唯一标识的作用,即给请求url起一个标识,返回给客户端
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容