专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

浏览器缓存机制介绍及前端优化方案

  背景
  缓存是用来做性能优化的好东西,但是,如果用不好缓存,就会产生一系列问题:为什么我的页面显示的还是老版本为什么我的网页白屏请刷新下网页。。。
  以上问题大家或多或少都遇到过,归根结底是使用缓存的姿势不对,今天,我们就来一起了解下浏览器是如何进行缓存的,以及我们要怎样科学的使用缓存浏览器的缓存机制1。什么是浏览器缓存?
  简单说,浏览器把http请求的资源保存到本地,供下次使用的行为,就是浏览器缓存
  这里先记一个点:http响应头,决定了浏览器会对资源采取什么样的缓存策略2。浏览器是读取缓存还是请求数据?用户第一次请求资源
  整个完整流程
  3。缓存过程分类强缓存协商缓存
  根据是否请求服务,我们把缓存过程分为强缓存和协商缓存,也可以理解为必然经过的过程称为强缓存,如果强缓存没有,那在和服务器协商一下强缓存
  强缓存看的是响应头的Expires和CacheControl字段Expires是老规范,它表示的是一个绝对有效时间,在该时间之前则命中缓存,如果超过则缓存失效,并且,由于它是跟本地时间(可以随意修改)做比较,会导致缓存混乱CacheControl是新规范,优先级要高于Expires,也是目前主要使用的缓存策略,字段是maxage,表示的是一个相对时间,例如CacheControl:maxage3600,代表着资源的有效期是3600秒。其他配置
  nocache:需要进行协商缓存,发送请求到服务器确认是否使用缓存。
  nostore:禁止使用缓存,每一次都要重新请求数据。
  public:可以被所有的用户缓存,包括终端用户和CDN等中间代理服务器。
  private:只能被终端用户的浏览器缓存,不允许CDN等中继缓存服务器对其缓存。协商缓存
  当强缓存没有命中的时候,浏览器会发送一个请求到服务器,服务器根据header中的部分信息来判断是否命中缓存。如果命中,则返回304,告诉浏览器资源未更新,可使用本地的缓存。
  协商缓存看的是header中的LastModifiedIfModifiedSince和EtagIfNoneMatch缓存生效,返回304,缓存失效,返回200和请求结果
  Etag优先级LastModified高LastModifiedIfModifiedSince
  浏览器第一次请求一个资源的时候,服务器返回的header中会加上LastModify,Lastmodify是一个时间标识该资源的最后修改时间。
  当浏览器再次请求该资源时,request的请求头中会包含IfModifySince,该值为缓存之前返回的LastModify。服务器收到IfModifySince后,根据资源的最后修改时间判断是否命中缓存,命中返回304使用本缓存,否则返回200和请求最新资源。EtagIfNoneMatch
  etag是更为严谨的校验,一般情况下使用时间检验已经足够,但我们想象一个场景,如果我们在短暂时间内修改了服务端资源,然后又迅速的改回去,理论上这种情况本地缓存还是可以继续使用的,这就是etag诞生的场景。
  使用etag时服务端会对资源进行一次类似hash的操作获得一个标识(内容不变标识不变),并返回给客户端。
  再次请求时客户端会在IfNoneMatch带上etag的值给服务端进行对比验证,如果命中返回304使用缓存,否则重新请求资源。
  注:由于eatg服务端计算会有额外开销,所以性能较差
  扩展:DNS缓存与CDN缓存DNS缓存
  我们在网上所有的通信行为都需要IP来进行连接,DNS解析是指通过域名获取相应IP地址的过程。
  基本上有DNS的地方就有缓存,查询顺序如下:
  一般我们日常会接触到的就是有时内网域名访问需要修改本地host映射关系,或者某些科学上网的情况,可以通过修改本地host来正常访问网址CDN缓存
  CDN缓存从减轻根服务的分发压力和缩短物理的传输距离(跨地域访问)上2个层面对资源访问进行优化。CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低。
  大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源服务器的负载。
  一般CDN服务都由运营商提供,我们只需要了解如何验证CDN是否生效即可查看域名是否配置了CDN缓存ping{{域名}}会看到转向了其他地址(alikunlun)例如:pingcustomer。kukahome。com
  查看我们的页面资源是否命中CDN缓存
  通过查看相应头有Xcache:HIT字段,则命中CDN缓存,注意这里名称并不固定,但一般都会有HIT标识,如果是MISS或None之类的,则没有命中缓存
  前端针对缓存部署优化方案构建演进
  构建方面优化的核心思想是如何更优,更快速的加载资源,以及如何保证资源的新鲜度
  这个优化过程也分为几个阶段,有些其实已经不适用现在的场景,但也可以了解下早期的图标合并雪碧图(sprite),多脚本文件整理到一个文件:目的是通过减少碎片化的请求数量来加速资源加载(相关知识点是浏览器一般最多只支持6个并发请求,同一时间请求数量需要控制在合理范围)现在雪碧图已基本被iconfont代替,js加载更多采用分模块异步加载,而不是一味合并随着web应用的推广和浏览器缓存技术的普及,前端缓存问题也随着而来,最常见的就是服务端资源变了,但是客户端资源始终无法更新,这个阶段工程师们想了很多方案。打包时在静态资源路径上加上?vversion或者使用时间戳来给资源文件命名
  跟modified缓存有点像,由于时间戳并不能识别出文件内容是否变动,所以有了后来的hash方案,理论上hash出来的文件只要内容不变,文件名就不变,大大提高了缓存的使用寿命,也是现代常用打包工具的默认配置
  然后,重点来了,以上我们对html文件里链接的资源做了一系列优化,但是html本身也是一种静态资源,并且,客户在访问页面时是不会带上所谓的时间戳或者版本号的,导致了很多时候虽然服务端资源更新了,但是客户端还是用老的html文本发起请求,这个时候就会导致各种各样的问题了,包括但不限于白屏,展现的旧版本页面等等
  为了解决这个问题,目前主流的解决方案是不对html进行缓存(一般单页应用html文件较小,大的是js),只对js,css等静态文件进行本地缓存
  那么,如何让浏览器不缓存html呢,目前都是通过设置CacheControl实现,有前端方案和后端方案,风险提示,前端方案很不靠谱,后端很多默认配置会覆盖前端方案,可以做了解,生产中请使用后端配置。通过html标签设置cachecontrol旧协议
  旧协议
  目前主流部署配置
  目前主流的前端部署方式都是使用nginx,我们来看看nginx如何禁用html的缓存location{root;配置页面不缓存html和htm结尾的文件if(requestfilename。。(?:htmhtml)){addheaderCacheControlprivate,nostore,nocache,mustrevalidate,proxyrevalidate;}indexindex。htmlindex。htm;}Private会影响到CDN缓存命中率,但本身CDN缓存也会存在版本问题,量不大的情况下也可以禁掉Nocache可以使用缓存,但是使用前必须到服务端验证,可以是nocache,也可以是maxage0Nostore完全禁用缓存Mustrevalidate与nocache类似,强制到服务端验证,作用于一些特殊场景,例如发送了校验请求,但发送失败了之类Proxyrevalidate与上面类似,要求代理缓存服务验证有效性
  以上配置可以跟据项目需要灵活配置,考虑到浏览器对缓存协议支持会有些许差异,只是想简单粗暴禁用html缓存全上也没有关系,并不会有特别大影响,除非特殊场景需要调优时需要关注。资源压缩
  都讲到这了,前端构建优化还有一个常用的就是Gzip资源压缩,可以极大减小资源包体积,前端一般构建工具都有插件支持,需要注意的是也需要nginx做配置才能生效http{gzipstaticon;gzipproxiedany;}
  如果生效了,响应头里可以看到contentencoding:gzip

沪指半日涨0。10汽车整车板块领涨中证网讯(记者李莉)2月21日早盘,A股三大指数冲高回落,沪指盘中一度站上3300点。据同花顺数据,截至午间收盘,上证指数涨0。10,报3293。71点深证成指跌0。14,报119师无道何谈尊严?评庐江中学所请陈副教授演讲失德及网上弦外之音上小学时,就时兴批师道尊严!但是,那时候并不懂其意涵。上中学时,读师说师者,所以传道授业解惑也。上大学时,路过一师范学校,教学楼上特书学高为师,身正为范。其实这些与师相关的事情,都足坛扫黑再升级!陈戌源心生悔意,某局公子哥失联,多人叛逃国外陈戌源被带走的这些日子里,关于他的传闻和爆料还是非常多的。不久前,前大连队总经理石雪清就爆料了一些关于陈戌源的事。石雪清直言,自己没有想到在大型国企任要职的陈戌源会因为利益关系而背9041奥沙利文希金斯,米尔金斯再创奇迹北京时间2月20日消息,2023年威尔士公开赛落下帷幕。决赛中,老将罗伯特米尔金斯以97战胜2005年世锦赛冠军魔术师肖恩墨菲夺得冠军。两位中国选手田鹏飞庞俊旭打进四强,前者更是连2022深圳马拉松圆满收官中国选手首夺赛事全马冠军深圳马拉松开跑羊城晚报全媒体记者王磊摄羊城晚报全媒体记者王俊报道2月19日,2万名跑者相聚2022深圳马拉松(以下简称深马),迎着晨光从深圳市民中心出发,奔向象征改革开放再出发浪潮安徽望江杨湾镇人勤春来早菜农耕种忙中国经济周刊经济网讯人勤春来早,菜农耕种忙。眼下正是蔬菜春种的繁忙时节,安徽望江县杨湾镇的农技人员和菜农们正铆足了劲,抢抓农时,有序投入新一年春耕春种工作中,为全年农业增收开好局起走进五个一百,见证网络里的活力中国一场正能量文化盛宴,弥漫追梦人的精神家园。近日,2022中国正能量五个一百网络精品征集评选展播活动不断引来广大网民的强烈关注。借助一篇篇文字一幅幅图片一部部音视频一个个专题专栏一项朝鲜连射3枚导弹后,美国要求联合国制裁朝方,中俄说了公道话这段时间,半岛局势正在不断升温,在美韩不断挑衅下,朝鲜最近多次发射导弹进行回应,2月18日,朝鲜试射了一枚火星15导弹,最高点距离地面5700公里,超过了大部分人造地球卫星的轨道高安徽省加强春季小麦田间管理全省小麦即将进入返青起身和拔节期。近日,省农业技术推广总站省农科院作物研究所发布2023年小麦春季田管技术指导意见,要求抓住早春有利时机,加强春季小麦田间管理,促进苗情转化升级。最中国男篮公布世预赛16人大名单,广东5人上榜文羊城晚报全媒体记者郝浩宇2月19日,中国男篮即将启程前往香港,参加2023男篮世界杯预选赛第六窗口期的两场比赛,中国篮协也同时公布了中国男篮16人大名单,广东5人上榜。和集训的1曲棍球世界超级联赛中国队胜新西兰队2月19日,中国队球员刘晨诚(右)在比赛中进攻。新华社发(孟韬摄)当日,在新西兰首都惠灵顿进行的曲棍球世界超级联赛中,中国女子曲棍球队在常规时间内与新西兰队1比1战平,最终经过23
柳暗花明!大胜开拓者,让衰败的湖人重拾信心从赛季初期信誓旦旦地冲击季后赛,到如今惨淡的战绩,湖人留给球迷的印象,更多的是困惑挣扎。甚至有的球迷开始抵制湖人,因为在他们的心中,湖人是不可战胜的,是永远的紫金王朝,他们不想看到2换1!勇士报价德罗赞,筹码低调曝光尽管卫冕军勇士开赛以来仅以11胜11负的战绩,勉强名列西部第8,但阵中34岁的当家球星斯蒂芬库里依旧打出了史上最佳的赛季之一。根据数据网站统计,库里在11月份,场均能够交出31。6如何延长运动寿命?35岁的球星梅西有一份饮食清单受访专家北京体育大学运动人体科学学院副教授苏浩环球时报健康客户端记者单祺雯12月1日凌晨3点,卡塔尔世界杯C组第3轮小组赛即将开打,很多人的目光都集中到了阿根廷队身上。在这场关键的95后山东小伙勇闯非洲4年,请马赛人当保镖,发现非洲海鲜很便宜这是真实人物故事会讲述的第92位人物。小编最近刷到非洲小五的视频,一位95后山东小伙闯荡非洲4年,还雇佣了两位马赛人当保镖,小五在非洲实现了海鲜自由,日常不是吃龙虾就是吃金枪鱼,发世界杯十六强全部出炉,韩国补时绝杀葡萄牙,压哨出线2022年卡塔尔世界杯今天凌晨结束了所有小组赛的征程十六强球队全部落位韩国补时绝杀葡萄牙瑞士进球大战力克塞尔维亚拿到最后两张门票亚足联球队则创纪录地有三支晋级韩国力克葡萄牙两队携手一级致癌物被揪出,世卫组织呼吁建议停止食用,别太大意在大多数人心中,癌症往往与绝症是同义词,癌症的可怕源自人们对不治之症的恐惧,事实上,癌症的真相远比上述理解更复杂。常见致癌的因素有哪些?1最常见的致癌物是生活中常见的香烟,无论是谁中国最大的死火山岛涠洲岛涠洲岛位于广西北海市北海湾海域中部,是因火山喷发堆积而形成的岛屿,岛上岩奇洞深,风光旖旎,素有大蓬莱仙岛之称。我是5月去的涠洲岛,因不是旺季,岛上住宿很便宜,我在岛上住了10天。如中国品牌进军新能源MPV市场的先锋兵作为中国品牌进军新能源MPV市场的先锋兵,腾势D9采用全新的Motion设计语言,前脸极具辨识度,而DMi车型的中网以仿钻切割技术加持,更有设计感。腾势D9的整车侧面姿态浑厚大气,中国科大实现非接触心电图实时监测大皖新闻讯中国科学技术大学吴曼青院士团队陈彦教授孙启彬研究员等人在无线人体感知研究中取得重要进展,实现了基于毫米波雷达的非接触人体心电图实时监测,突破了百余年来心电图仅能通过接触式为何不再建议大家一天喝够8杯水?问为何不再建议大家一天喝够8杯水?一直以来,每天喝够8杯水是很多人对健康饮水量的认知。不过,近年来,越来越多的科学研究不再支持这个说法。究其原因,还是与不同人群之间存在需水量差异有湖人收获3换2交易建议!264巨星助力詹姆斯,新三巨头统治西部?交易背景虽然赛季刚开始,湖人遭遇了一系列连败,球队没有任何夺冠希望,但经过了马刺3送温暖,篮网开拓者的助力,战绩来到8胜12负,一度让湖人看到了补强的希望。最近湖人管理层又打起了补
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网