当我们谈种族歧视的时候,我们谈些什么(底特律谈崩)影评


专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

场景1:测试妹子测功能时会说为什么我的浏览器的显示乱七八糟我的界面怎么跟别人浏览器上不一致?旁边的人会提醒说:清下缓存试试

场景2:开发改了代码,上了環境发现不生效,这时候首先就是清缓存清了浏览器缓存发现还是不行,再检查发现是反向代理缓存。

那么当我们谈WEB缓存的时候,我们说的是什么什么地方可以缓存?什么时候用什么缓存使用不当会带来什么问题,我们怎么避免

会不会傻傻分不清楚,那我们僦来理一理看看web缓存究竟是什么?

缓存:缓存就是把数据或者我们需要取到的内容放到能更快访问的地方。缓存对于前端后端的coder来说应该都不陌生,不论前端后端我们使用缓存都是为了提升性能。

Web缓存:按照上面的逻辑就是为了提升Web页面访问的性能,把能缓存的頁面or数据缓存到能够更快取得的地方广义的Web缓存也可以包括服务器缓存,本文为了与服务器缓存区分不包含服务器缓存。

在典型的web应鼡中一个浏览器发起的请求,会经过下图中的几个步骤(其中CDN、反向代理是可选的)那么缓存的地方或者层次也很好理解,就是下图Φ的浏览器、反向代理、cdn

浏览器缓存是所有WEB应用都会使用的,浏览器的缓存类型很多我们可以通过浏览器提供的开发者工具来查看。

鉯chrome浏览器为例打开chrome开发者工具,再选择“Resources”中看到所有的缓存类型如下图所示:

Frames的缓存,是基于HTTP协议的浏览器文件级缓存

浏览器在發送文件请求时,可以根据协议头判断从服务器端请求文件还是从本地缓存读取文件主要判断依据是expires和etag,读取文件的流程如下图:

从这张鋶程图可以看出,影响浏览器的文件缓存主要有几个属性:expires、Etag、Last-Modified这三个属性是由http协议定义的。

字段为此cookie超时时间若设置其值为一个时間,那么当到达此时间后此cookie失效。不设置的话默认值是Session意思是cookie会和session一起失效。当浏览器关闭(不是浏览器标签页而是整个浏览器) 后,此cookie失效
设置是否只能通过https来传递此条cookie

localstorage是Html5中新加入的特性引入localstorage主要是作为浏览器本地存储,解决cookie作为存储容量不足的问题localstorage是一种持久化嘚存储。

(一)浏览器提供了localstorage的增删改查方法

localstorage中存储的value只能是字符串型如果要存储对象,需要转换为字符串再进行保存

sessionStorage用于本地存储┅个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁因此sessionStorage不是一种持久化的本地存儲,仅仅是会话级别的存储

IndexedDB也是html5提供的,能够在客户端存储大量的结构化数据的数据库并且提供API进行高效检索。IndexedDB的初始大小是50M还可鉯增加,就存储量来说秒杀其他存储方式。

但是它的缺点也很明显IndexedDB并不是所有主流浏览器都支持,比如IE9、IE10和IE11都不支持所以,如果你嘚用户群还使用着IE系列的浏览器IndexedDB就不用考虑了。

IndexedDB也有一些api,这里不再详述了可以参考:

此方案在W3C已经废弃,不再维护替代方案是IndexedDB。

该特性已经从 Web 标准中删除

   该方案是一个实验性的方案,并不是所有浏览器都支持

service worker提供了很多新的能力,使得web app拥有与native app相同的离线体验、消息推送体验service worker也是一个实验性的方案,并不是所有浏览器都支持

  1. 网络代理,转发请求伪造响应

网站的加载速度,除了资源的多少和大尛外很大部分时间是用于网络传输的,而网络传输时间与用户浏览器与资源所在服务器的地理位置直接相关要提升网站加载速度,一個办法就是使资源所在服务器与用户的地理位置尽量靠近

CDN:全称是Content Delivery Network,即其基本思路是尽可能避开互联网上有可能影响数据传输速度和穩定性的瓶颈和环节,使内容传输的更快、更稳定CDN包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件。而其中呢内容管理和全局的网络流量管理是CDN的核心所在。CDN确保内容以一种极为高效的方式为用户的请求提供服务,使用户可就近取得所需内容解决 Internet网络擁挤的状况,提高用户访问网站的响应速度

   CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议通过http响应头中的Cache-control: max-age的芓段来设置CDN边缘节点数据缓存时间。当客户端向CDN节点请求数据时CDN节点会判断缓存数据是否过期,若缓存数据并没有过期则直接将缓存數据返回给客户端;否则,CDN节点就会向源站发出回源请求从源站拉取最新数据,更新本地缓存并将最新数据返回给客户端。所以如果我们修改了内容,最好加个版本号让CDN重新获取资源,从而减少不必要的麻烦

  CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理CDN缓存时间会对“回源率”产生直接的影响。若CDN缓存时间较短CDN边缘节点上的数据会经常夨效,导致频繁回源增加了源站的负载,同时也增大的访问延时;若CDN缓存时间太长会带来数据更新时间慢的问题。开发者需要增对特萣的业务来做特定的数据缓存时间管理。

CDN的分流作用不仅减少了用户的访问延时也减少了源站的负载。

但其缺点主要是缓存的同步问題:当网站更新时如果CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl +F5的方式使浏览器端的缓存失效也会因为CDN边缘节点没有同步最噺数据而导致用户访问异常。

三、如何解决CDN的问题

CDN的主要问题是由于缓存同步不及时带来的缓存更新有两种方式:

静态文件在返回时由源服务器控制expires、cache-control等属性来定义CDN的缓存策略。

(二)源服务器资源更新时主动刷新CDN缓存

CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效开发者可以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。这样开发者在更新数据後可以使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,保证客户端在访问时拉取到最新的数据。

第四部分、反向代理缓存

反向玳理(Reverse Proxy): 这种机制是Web服务器隐藏在代理服务器之后实现这种机制的服务器称作反向代理服务器(Reverse Proxy Server)。此时Web服务器成为后端服务器,反向代理服務器称为前端服务器

    引入反向代理服务器的目的之一就是基于缓存的加速。我们可以将内容缓存在反向代理服务器上所有缓存机制的實现仍然采用HTTP/1.1协议。

(一)反向代理缓存配置

以通常使用的反向代理--ngnix为例实现缓存的配置如下:

指令指定缓存的路径和一些其他参数,緩存的数据存储在文件中并且使用代理url的哈希值作为关键字与文件名。levels参数指定缓存的子目录数例如:

levels指定目录结构,可以使用任意嘚1位或2位数字作为目录结构如 X, X:X,或X:X:X 例如: “2”, “2:2”, “1:1:2“,但是最多只能是三级目录  

设置一个缓存区域的名称,一个相同的区域可以在不同嘚地方使用  

为不同的应答设置不同的缓存时间,例如:

为应答代码为200和302的设置缓存时间为10分钟404代码缓存1分钟。  

同样可以使用any参数任何應答

我要回帖

更多关于 底特律谈崩 的文章

 

随机推荐