首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

缓存从入门到放弃

值通过if-modified-since 传递给服务端 , 服务端通过比较当前文件的修改时间和上次修改时间(上次传给客户端的值),如果相等那么说明文件修改时间没变也就是没变化。...if-none-match带过来,服务端再比对当前文件内容加密得出的hash值和上次是否一样,如果一样说明文件内容没有发生改变,这种方式是最准确的方式,但是也是最耗性能。...(CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现) ?...提高响应速度,减少响应延迟 减少资源消耗(服务器、带宽) 使用缓存可能导致的问题?...缓存雪崩,是指缓存使用不合理时,某一时间缓存失效,大量请求会直接到达向服务器,服务器无法承载大量请求,就导致服务器崩溃 缓存更新不及时,是指缓存使用不合理时,服务器文件更新,用户获取到的还是旧的错误的缓存文件

92310

前端性能优化(二)——浏览器缓存机制

分别从两个维度:新鲜度和校验值,规定浏览器是否可以直接使用缓存中的副本,还是直接从服务器获取最新资源。...告诉浏览器资源缓存过期时间,如果还没过该时间点则不发请求【http1.0中存在的字段,该字段所定义的缓存时间是相对服务器上的时间而言的,如果客户端上的时间跟服务器上的时间不一致(特别是用户修改了自己电脑的系统时间...】 If-Modified-Since Mon, 15 Aug 2016 03:56:47 GMT 请求 其值为上次响应头的Last-Modified值,再次向web服务器请求时带上头If-Modified-Since...若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),包括更新Last-Modified的值,HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304(...,Cache-Control可以设置的更细致,如果同时设置,它的优先级高于Expires。

45430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    前端性能优化(二)——浏览器缓存机制

    分别从两个维度:新鲜度和校验值,规定浏览器是否可以直接使用缓存中的副本,还是直接从服务器获取最新资源。...告诉浏览器资源缓存过期时间,如果还没过该时间点则不发请求【http1.0中存在的字段,该字段所定义的缓存时间是相对服务器上的时间而言的,如果客户端上的时间跟服务器上的时间不一致(特别是用户修改了自己电脑的系统时间...】 If-Modified-Since Mon, 15 Aug 2016 03:56:47 GMT 请求 其值为上次响应头的Last-Modified值,再次向web服务器请求时带上头If-Modified-Since...若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),包括更新Last-Modified的值,HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304(...,Cache-Control可以设置的更细致,如果同时设置,它的优先级高于Expires。

    2K40

    前端性能优化(二)——浏览器缓存机制

    分别从两个维度:新鲜度和校验值,规定浏览器是否可以直接使用缓存中的副本,还是直接从服务器获取最新资源。...告诉浏览器资源缓存过期时间,如果还没过该时间点则不发请求【http1.0中存在的字段,该字段所定义的缓存时间是相对服务器上的时间而言的,如果客户端上的时间跟服务器上的时间不一致(特别是用户修改了自己电脑的系统时间...】 If-Modified-Since Mon, 15 Aug 2016 03:56:47 GMT 请求 其值为上次响应头的Last-Modified值,再次向web服务器请求时带上头If-Modified-Since...若最后修改时间较新,说明资源又被改动过,则响应整片资源内容(写在响应消息包体内),包括更新Last-Modified的值,HTTP 200;若最后修改时间较旧,说明资源无新修改,则响应HTTP 304(...,Cache-Control可以设置的更细致,如果同时设置,它的优先级高于Expires。

    58420

    缓存策略

    他们分别从新鲜度和校验值两个维度来规定浏览器是否可以直接使用缓存中的副本,还是需要去源服务器获取更新的版本。 新鲜度(过期机制):也就是缓存副本有效期。...当一个用户发起一个静态资源请求的时候,浏览器会通过以下几步来获取资源: 本地缓存阶段:先在本地查找该资源,如果有发现该资源,而且该资源还没有过期,就使用这一个资源,完全不会发送http请求到服务器; 协商缓存阶段...它对维持一个资源总是最新的也很有用,与此同时还不完全丧失cache带来的好处),因为它在本地是有拷贝的,但是在用之前都进行了确认,这样http请求并未减少,但可能会减少一个响应体。...last-modified是WEB服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间。...5.服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

    98410

    缓存策略

    他们分别从新鲜度和校验值两个维度来规定浏览器是否可以直接使用缓存中的副本,还是需要去源服务器获取更新的版本。 新鲜度(过期机制):也就是缓存副本有效期。...当一个用户发起一个静态资源请求的时候,浏览器会通过以下几步来获取资源: 本地缓存阶段:先在本地查找该资源,如果有发现该资源,而且该资源还没有过期,就使用这一个资源,完全不会发送http请求到服务器; 协商缓存阶段...它对维持一个资源总是最新的也很有用,与此同时还不完全丧失cache带来的好处),因为它在本地是有拷贝的,但是在用之前都进行了确认,这样http请求并未减少,但可能会减少一个响应体。...last-modified是WEB服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间。...5.服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应体。

    1.7K80

    彻底解决SESSION过期异常:一文讲透Http的缓存机制

    ,都会先在浏览器缓存中查找该请求的结果以及缓存标识。...则是客户端再次发起该请求时,携带上次请求返回的 Last-Modified 值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。...服务器收到该请求,发现请求头含有 If-Modified-Since 字段,则会根据 If-Modified-Since 的字段值与该资源在服务器的最后被修改时间做对比,若服务器的资源最后被修改时间大于...是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成),如下: If-None-Match 是上次请求返回的唯一标识 Etag 值。...客户端再次发起该请求时需要携带,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。

    2.6K30

    CDN缓存的理解

    中心层保存了加速域名的相关配置信息比如源站域名,也缓存了加速域名下的各种资源,在边缘层节点未命中缓存时,需要向中心层节点发起请求,而中心层节点未能命中缓存时,需要查找对应的源站域名,并向该源站域名发起请求...在这个查找资源的过程中域名可能会发生变化,但是资源的path是不会变化的。 之后再进行访问,则直接能够从边缘节点取得缓存而不用回源,加快资源访问速度。...简单来说,就是浏览器会将服务端响应的资源进行缓存,但是在每次请求时,缓存都要向服务端评估缓存响应的有效性,协商缓存是否可用,根据响应是304还是200判断是使用本地缓存资源还是使用服务器响应的资源。...,浏览器会在请求头加上If-Modified-Since即上次响应的Last-Modified的值,询问服务器在该日期后资源是否有更新,有更新的话就会将新的资源发送回来,但是如果在本地打开缓存文件,就会造成...ETag If-None-Match Etag就像一个指纹,资源变化都会导致ETag变化,跟最后修改时间没有关系,ETag可以保证每一个资源是唯一的,If-None-Match的请求头字段会将上次返回的

    3K41

    一篇关于浏览器缓存知识的梳理

    image.png expires 是HTTP1.0控制网页缓存的字段,值为一个时间戳,准确来讲是格林尼治时间,服务器返回该请求结果缓存的到期时间,意思是,再次发送请求时,如果未超过过期时间,直接使用该缓存...image.png If-Modified-Since则是客户端再次发起该请求时,携带上次请求返回的Last-Modified值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。...服务器收到该请求,发现请求头含有If-Modified-Since字段,则会根据If-Modified-Since的字段值与该资源在服务器的最后被修改时间做对比,若服务器的资源最后被修改时间大于If-Modified-Since...image.png If-None-Match是客户端再次发起该请求时,携带上次请求返回的唯一标识Etag值,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。...服务器收到该请求后,发现该请求头中含有If-None-Match,则会根据If-None-Match的字段值与该资源在服务器的Etag值做对比,一致则返回304,代表资源无更新,继续使用缓存文件;不一致则重新返回资源文件

    63421

    浏览器缓存的力量

    expires 是HTTP1.0控制网页缓存的字段,值为一个时间戳,准确来讲是格林尼治时间,服务器返回该请求结果缓存的到期时间,意思是,再次发送请求时,如果未超过过期时间,直接使用该缓存,如果过期了则重新请求...If-Modified-Since则是客户端再次发起该请求时,携带上次请求返回的Last-Modified值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。...服务器收到该请求,发现请求头含有If-Modified-Since字段,则会根据If-Modified-Since的字段值与该资源在服务器的最后被修改时间做对比,若服务器的资源最后被修改时间大于If-Modified-Since...If-None-Match是客户端再次发起该请求时,携带上次请求返回的唯一标识Etag值,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。...服务器收到该请求后,发现该请求头中含有If-None-Match,则会根据If-None-Match的字段值与该资源在服务器的Etag值做对比,一致则返回304,代表资源无更新,继续使用缓存文件;不一致则重新返回资源文件

    53820

    大型网站必备,彻底理解Http的缓存机制!

    Expires Expires 是 HTTP/1.0 控制网页缓存的字段,其值为服务器返回该请求结果缓存的到期时间,即再次发起该请求时,如果客户端的时间小于Expires 的值时,直接使用缓存结果。...Expires 是 HTTP/1.0 的字段,但是现在浏览器默认使用的是 HTTP/1.1,那么在 HTTP/1.1 中网页缓存还是否由 Expires 控制?...If-Modified-Since 则是客户端再次发起该请求时,携带上次请求返回的 Last-Modified 值,通过此字段值告诉服务器该资源上次请求返回的最后被修改时间。...服务器收到该请求,发现请求头含有 If-Modified-Since 字段,则会根据 If-Modified-Since 的字段值与该资源在服务器的最后被修改时间做对比,若服务器的资源最后被修改时间大于...If-None-Match 是客户端再次发起该请求时,携带上次请求返回的唯一标识 Etag 值,通过此字段值告诉服务器该资源上次请求返回的唯一标识值。

    75820

    当我们在谈论HTTP缓存时我们在谈论什么

    上图可以知道当浏览器请求一个静态资源时的HTTP流程: 1.强缓存阶段:先在本地查找该资源,如果发现该资源,并且其他限制也没有问题(比如:缓存有效时间),就命中强缓存,返回200,直接使用强缓存,并且不会发送请求到服务器...http请求没有减少,会减少一个响应体(文件内容),这种个选项类似弱缓存。 only-if-cached: 表明客户端只接受已缓存的响应,并且不要向原始服务器检查是否有更新的拷贝。...last-modified是web服务器认为文件的最后修改时间,last-modified是第一次请求文件的时候,服务器返回的一个属性。 ?...3.服务器检查该Last-Modified或ETag,并判断出该资源页面自上次客户端请求之后还未被修改,返回响应304和一个空的响应体。...(Etag值会触发缓存,Last-Modified不会触发) 2.If-Modified-Since能检查到的粒度是秒级的,当修改非常频繁时,Last-Modified会触发缓存,而Etag的值不会触发

    84930

    linux使用find和crontab命令定期清理过期文件

    crontab 文件的格式 不管是用 crontab 从文件读入定时任务,还是用 crontab -e 编辑定时任务,我们都会接触到 crontab 格式的命令。...花式定时 在 crontab 命令中用于定时的前 5 列中,支持以下符号,用于「花式定时」: 星花(*):代表所有可能的值; 逗号(,):用逗号隔开同一字段的不同范围; 连字符(-):用连字符连接两个整数...及子目录下递归地查找所有 search 账号所属的文件,并打印在标准输出中 -atime, -mtime, -amin, -mmin : a 开头的表示「按照上次访问时间查找」,m 开头的表示「按照上次修改时间查找...及子目录下递归地查找所有上次访问在 7 天以前的文件,并打印在标准输出中 find . -mmin -10: 在当前目录 (.)...及子目录下递归地查找所有上次修改在 10 分钟以内的文件,并打印在标准输出中 -newer file1 !

    1.9K20

    一文读懂浏览器缓存

    从浏览器开发者工具的 Network 面板下某个请求的 Size 中可以看到当前请求资源的大小以及来源,从这些来源我们就知道该资源到底是从 memory cache 中读取的呢,还是从 disk cache...❝浏览器如何判断一个资源是存入内存还是硬盘呢?关于这个问题,网上说法不一,不过比较靠谱的观点是:对于大文件大概率会存入硬盘中;当前系统内存使用率高的话,文件优先存入硬盘。...: max-age 最大缓存时间,值的单位是秒,在该时间内,浏览器不需要向浏览器请求。...而浏览器缓存标识可以是:Last-Modified 和 ETag: Last-Modified 资源的最后修改时间;第一次请求的时候,响应头会返回该字段告知浏览器资源的最后一次修改时间;浏览器会将值和资源存在缓存中...;再次请求该资源的时候,如果强缓存过期,则浏览器会设置请求头的 If-Modifined-Since 字段值为存储在缓存中的上次响应头 Last-Modified 的值,并且发送请求;服务器拿着 If-Modifined-Since

    41920

    强缓存与协商缓存

    强缓存与协商缓存 浏览器缓存是浏览器在本地磁盘对用户最近请求过的资源进行存储,当访问者再次访问同一资源时,浏览器就可以直接从本地磁盘加载资源,通过缓存的方式就可以减少与服务器的数据传输,减少服务器的负担...一个陈旧的资源缓存副本是不会直接被清除或忽略的,当客户端发起一个请求时,缓存检索到已有一个对应的陈旧资源缓存副本,则缓存会先将此请求附加一个If-None-Match头,然后发给目标服务器,以此来检查该资源副本是否是依然还是算新鲜的...简单来说,就是浏览器会将服务端响应的资源进行缓存,但是在每次请求时,缓存都要向服务端评估缓存响应的有效性,协商缓存是否可用,根据响应是304还是200判断是使用本地缓存资源还是使用服务器响应的资源。...,浏览器会在请求头加上If-Modified-Since即上次响应的Last-Modified的值,询问服务器在该日期后资源是否有更新,有更新的话就会将新的资源发送回来,但是如果在本地打开缓存文件,就会造成...ETag If-None-Match Etag就像一个指纹,资源变化都会导致ETag变化,跟最后修改时间没有关系,ETag可以保证每一个资源是唯一的,If-None-Match的请求头字段会将上次返回的

    98520

    雅虎优化最佳实践

    独立出来会增加http请求数,但是可以减小html大小,还可以利用缓存。内联会增加html大小,但是减少请求。 所以比如首页,可以将js与css内联,因为速度第一。...减少DNS查找 dns即www.bing.com–>202.89.233.100,根据网址查询出ip地址。...当客户端的DNS缓存为空(对于浏览器和操作系统)时,DNS查找的数量等于网页中唯一主机名的数量,包括各类url,js,css,flash对应的主机名。因此可以适量减少唯一主机名。...ETags的缺点在于,不同服务器下同一文件的ETags是不一样的,所以如果网站是多服务器的,最好还是不要用ETags,用Last-Modified。 (有一个想法,可否在此基础上更优化点?...304即浏览器发送一个“If-Modified-Since”条件请求,其中这个属性代表所请求资源上次请求时最后修改时间,如果服务器跟自己这里的last-modified比较,结果为浏览器本地缓存的版本已经是最新

    1.5K20
    领券