资讯专栏INFORMATION COLUMN

Web缓存优化的进阶认知

nemo / 2260人阅读

摘要:可缓存优化并不是所有资源都是可以被缓存的。影响缓存的因素主要有请求方法,请求参数设置以及状态码。可缓存的有消极缓存的状态码不可缓存的状态码缓存中的生命周期是指对象相邻两次修改的时间。此时该对象是不可缓存对象添加字段可以增长对象生命周期。

一般情况下,网站在第二次加载时,加载时间会大大被提升,这是因为网页中的一些资源被客户端缓存下来了,网页在二次加载的时候就不需要重新从远处服务器请求资源,而是直接应用客户端缓存好的数据。

扯远了···


Web缓存优化是一种提高现有系统利用率的方式,是处于用户和Web服务器之间的信息缓冲机制,基本思想是:利用了Web页面访问的时间的局部性,把用户经常访问的信息放到用户的附近或本地,以便用户后续访问能从客户端和本地服务器获取信息,不必访问远程服务器。Web缓存通过信息的本地化来加快网页浏览速度,在一定程度上节省网络带宽,减少服务器负荷。

由缓存实现的位置不同可以将Web缓存分为三类,即客户端缓存代理缓存服务器端缓存。客户端缓存主要在客户机浏览器端实现,将用户请求的数据缓存在本地,这种方法响应时间最短,但是不能被局域网所共享;代理缓存指代理服务器缓存,代理服务器位于客户端与服务器之间,代理服务器在接到用户请求时,将缓存信息返回给用户,如果请求信息不在缓存中,则请求远程服务器,代理缓存的优点是可以被局域网共享;服务器缓存指将服务器端动态数据缓存给客户端使用。

可缓存优化

并不是所有Web资源都是可以被缓存的。那么从客户端优化角度,提高Web资源的可缓存话就会提高客户端的性能。

影响Web缓存的因素主要有HTTP请求方法,请求参数设置以及HTTP状态码。HTTP/1.1规定Web请求方法有GET、HEAD、POST、DELETE、OPTION、CONNECT和TRACE八种,只有GET与POST请求是可缓存的。

根据HTTP状态码可将Web对象缓存性分为三种。可缓存的有:200、203、300、301、401;消极缓存的HTTP状态码:204、305、400、403、404、405、414、500、502、504;不可缓存的HTTP状态码:100、101、201、202、205、206、302、303、304、307、401、402、406、407、408、409、411、412、413、415、501、505.

Web缓存中的生命周期是指Web对象相邻两次修改的时间。HTTP中对Web生命周期进行描述的参数有Expireslast modified等,大部分时候靠last modified参数来判断Web对象的生命周期。当某一Web资源进行修改后,Web缓存服务器中并没有进行相应的修改,这时候用户请求该资源并访问Web对象是否包含Expires字段,如果包含则进行校验,符合则返回当前资源,如果不包含该字段,Web缓存服务器会向远程服务器发起GET-If-modified请求,并发送当前last modified字段,如果响应不包含last modified字段,则使用当前last modified值。

不可缓存Web对象的HTTP参数设置
不可缓存HTTP头部信息 不可缓存HTTP头部信息参数含义
缺少 last modified 参数的对应信息 last modified time 指出服务器认出Web对象被修改的最后日期和时间,即若对象在 last modified time 值域以后被修改过,则该对象是不可缓存的。若服务器的返回值是304 not modified,则对象可被缓存
设置 set cookie 当缓存控制信息 cache-control 被设置为“不可缓存”或是“私有”时,该对象是不可缓存的
设置 Pragma:no-cache 当头部信息中有此设置时,服务器禁止请求从缓存响应。此时该对象是不可缓存的
设置 authorization 当返回的头部信息中包含个人信息时,缓存对象的效率很低。此时该对象是不可缓存对象

添加Expires字段可以增长Web对象生命周期。Expires字段告诉Web客户端,在指定的时间之前都可以使用现有的Web对象,不需要重新下载。假如在HTTP响应中出现这样的Expires:

expires:Sat, 03 Sep 2016 14:33:39 GMT

这个字段告诉浏览器,该资源的生命周期可以持续到2016年9月3日。如果Web网页中某一段资源返回了这个头,那么浏览器在以后加载这个页面时,会使用缓存中的本地资源,用户在二次访问的时候就节省了下载时间。

Nginx给静态资源添加Expires头

打开Nginx的站点配置文件,这里考虑给图片资源添加30天的有效期,给css和js添加7天有效期,也给字体资源添加30天的有效期。

server{}里添加下面代码:

location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
}

location ~ .*.(js|css)?$ {
    expires 7d;
    access_log off;
}

location ~ .*.(eot|ttf|otf|woff|svg)$ {
    expires 30d;
    access_log off;
}
其他

实践的东西不多,另外再次对网站进行一次提速,过几天就开始对服务器进行升级,希望会更大的访问速度的提升。这篇文章写得好累啊!

文章首发于:https://www.linpx.com

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61815.html

相关文章

  • Web缓存优化进阶认知

    摘要:可缓存优化并不是所有资源都是可以被缓存的。影响缓存的因素主要有请求方法,请求参数设置以及状态码。可缓存的有消极缓存的状态码不可缓存的状态码缓存中的生命周期是指对象相邻两次修改的时间。此时该对象是不可缓存对象添加字段可以增长对象生命周期。 一般情况下,网站在第二次加载时,加载时间会大大被提升,这是因为网页中的一些资源被客户端缓存下来了,网页在二次加载的时候就不需要重新从远处服务器请求资源...

    miguel.jiang 评论0 收藏0
  • 进阶Java架构师必看15本书

    摘要:阿里巴巴的共享服务理念以及企业级互联网架构建设的思路,给这些企业带来了不少新的思路,这也是我最终决定写这本书的最主要原因。尽在双阿里巴巴技术演进与超越是迄今唯一由阿里巴巴集团官方出品全面阐述双八年以来在技术和商业上演进和创新历程的书籍。 showImg(https://segmentfault.com/img/remote/1460000015386860); 1、大型网站技术架构:核...

    Julylovin 评论0 收藏0
  • 实践解析:大众点评账号业务高可用进阶之路

    摘要:需要监控的维度有登录总数成功数失败分类用户地区版本号浏览器类型登录来源服务所在机房等等。 引言在任何一家互联网公司,不管其主营业务是什么,都会有一套自己的账号体系。账号既是公司所有业务发展留下的最宝贵资产,它可以用来衡量业务指标,例如日活、月活、留存等,同时也给不同业务线提供了大量潜在用户,业务可以基于账号来做用户画像,制定各自的发展路径。因此,账号服务的重要性不言而喻,同时美团业务飞速发展...

    Guakin_Huang 评论0 收藏0
  • PHP 进阶之路 - 亿级 pv 网站架构实战之性能压榨

    摘要:业务和架构不分家,架构是建立在对业务的理解之上的。主键最好保持顺序递增,随机主键会导致聚簇索引树频繁分裂,随机增多,数据离散,性能下降。没有索引的更新,可能会导致全表数据都被锁住。 本博客并非全部原创,其实是一个知识的归纳和汇总,里面我引用了很多网上、书上的内容。也给出了相关的链接。 本文涉及的知识点比较多,大家可以根据关键字去搜索相关的内容和购买相应的书籍进行系统的学习。不对的地方...

    SnaiLiu 评论0 收藏0
  • 前端优化 - 收藏集 - 掘金

    摘要:虽然有着各种各样的不同,但是相同的是,他们前端优化不完全指南前端掘金篇幅可能有点长,我想先聊一聊阅读的方式,我希望你阅读的时候,能够把我当作你的竞争对手,你的梦想是超越我。 如何提升页面渲染效率 - 前端 - 掘金Web页面的性能 我们每天都会浏览很多的Web页面,使用很多基于Web的应用。这些站点看起来既不一样,用途也都各有不同,有在线视频,Social Media,新闻,邮件客户端...

    VincentFF 评论0 收藏0

发表评论

0条评论

nemo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<