更新网站 图片缓存_这份 20 分钟的缓存指南,总结了运维高手的十年实战经验...

news/2024/5/13 14:35:09/文章来源:https://blog.csdn.net/weixin_39636540/article/details/111339157

46f03abbb30f9fea962906f1f910fe66.png
作者:牧客Jeson,前阿里巴巴运维专家。本文选自:拉勾教育专栏《运维高手的36项修炼》

​你好,我是你的运维课老师 Jeson,接下来我们来了解一个问题,客户端如何直观的看到大部分缓存(浏览器缓存、代理缓存、ssl缓存)优化效果呢?

推荐你用 Chrome 浏览器中的开发者工具,打开浏览器并点击视图-开发者工具。如我在在 URL 地址栏中输入 http://www.jesonc.com。这个时候我们会看到在 Network 标签栏中会出现对应的访问名称、路径。然后点击某一个路径,这时会在 Headers 中看到响应的头信息内容。

运维高手的36项修炼 - 前阿里巴巴运维专家 - 拉勾教育​kaiwu.lagou.com

缓存优化

接下来我们讲解缓存优化配置,基于缓存元素存放的位置,再对我们所需要讲的缓存作一个分类。

如果缓存的元素在客户端的,那么主要有浏览器缓存和 HTTPS 缓存,你可别认为缓存文件是在客户端,这两部分缓存效果都可以 Nginx 这种代理来进行设置并作主要优化。

另外一个种类代理端的缓存(也就是缓存文件存放再代理服务的节点中),那Nginx 作为反向代理服务的时候,可以支持代理缓存设置。

最后一个种类是将缓存文件放入后台服务(通过后台服务中程序逻辑来实现),例如我们可以将一部分数据通过此方式缓存,比如将用户最长查看的数据(网站中登录状态、连接数等)缓存到 Memcache、Redis 中,避免直接请求关系型数据库或其他服务,因为效用效率更高所以可以降低后端的延迟,也减少请求对数据库的依赖度,从而整个网站的性能也会有很大的提升。

只考虑缓存最优的话,我有三点经验可以分享给你:

  1. 缓存越靠前越好,通常情况下整个网站的元素内容越靠前越好,也就是说能放在客户端的就放在客户端,而不要放到后端去频繁请求。
  2. 缓存的数据越多越好,也就是能在本层级缓存的数据越多,就越可以减少对后端的请求。
  3. 缓存的命中率越高越好,如果设置了很多缓存,但命中率不高,同样还是会造成穿透到后端访问,此时还需要考虑将缓存的命中率设置的越高,这时观察指标,会发现缓存效果越优。

通常而言,一个网站如果做了缓存优化可以比没做缓存优化的性能提升几倍以上。

刚刚介绍的缓存分类,接下来我们再结合 Nginx 具体了解一下,如何来设置缓存。

浏览器缓存

第一个就是浏览器缓存,浏览器缓存通常是缓存到客户端(如:浏览器、客户端app),这就是浏览器缓存。

对于浏览器这部分缓存数据,我们通常可以把静态元素,比如用户请求的图片、CSS 、JS 等元素缓存到客户端。这种缓存可以通过 Nginx配置中的 expires 配置项进行设置,expires 后面可以加具体的时间,也可以加对应的特定意义的数值,比如 -1 表示永久缓存,max 设置最大周期缓存(默认缓存周期为 10 年),需要做具体的时间的设置可以写入具体的时间周期,比如一个小时或是一天。

HTTPS 配置优化

第 2 个缓存设置方式需要对 HTTPS 访问进行缓存优化,因为当前我们很多网站通常在开启 HTTPS ,当开启https后客户端访问服务端打开一次浏览器,通过https方式会比 HTTP 请求握手会要增加很多次从而延迟也增加了。这时就需要考虑 HTTPS 是否有更好的优化方案来减少客户端和服务端请求。

adfa0f764a801088f4ee9e24185954cd.png

如图中是一个https请求过程,实际在进行 HTTPS 请求之前的需要进行TCP 的三次握手过程,而这里我只是描述 HTTPS 的建连过程,客户端发送 hello 报文,服务端发送证书,客户端进行加密,服务端验证加密。这时开始进行服务端与客户端的传输。我们看到整个 HTTPS 建连增加了部分的证书加密的协商。

多次的连接对于用户及服务端而言,性能和延迟都会增加很多。并且如果每一次浏览器跟服务端断开连接以后,又要进行一次整体的建立连接的过程。为了减少客户端和服务端的断开重连过程,这时就需要 在Nginx中配置 ssl_session_cache 发挥作用。

下面我们来说下这个配置原理,当浏览器跟服务端建立第一次加密证书验证的会话后,服务端会给客户端浏览器缓存一个 SessionKey,,如果客户端跟服务端再次断开连接,这时浏览器就可以拿 SessionKey 直接跟服务端进行交互。只需要进行一次校验,就可以开始数据传输。我们看到有了 SessionKey 这种方式后,就可以避免浏览器跟服务端频繁的进行 HTTPS 会话的建联。

通过在 Nginx 中添加 ssl_session_cache 配置,配置中分配 Nginx 在处理 SSL 会话所需要开辟的共享内存的空间,我这里这里设置值为 10 MB,第二个参数就是设置 SSL SessionKey 的超时时间。

好了,上面就是对 HTTPS 在会话层进行的缓存优化示例。

打开文件缓存

05d47a4629944e77e4ea5e7fc13c0a05.png

第 3 个就是打开文件缓存,打开文件缓存设置在 Nginx 端,通常而言我们会把一些静态元素(如:JPG、CSS、GS)在代理端通过这种方式进行设置,这里 Nginx 缓存的是静态元素的元数据。那么把元数据缓存到 Nginx 端有什么好处?元数据的作用就是缓存打开用户所请求的静态元素的文件路径等信息,那么如果在本地频繁地查找之前请求过的静态元素文件而没有缓存元数据时效率比较低,而如果我们把一部分索引数据缓存到 Nginx 的 Cache 下,这种频繁访问就可以很大地提高访问效率。

我们来看 open_file_cache 具体的设置策略,max 表示最大能够缓存的文件个数,inactive 表示最少的用户使用次数。我们结合看一下,这个表示在 20 秒内最小需要使用两次。如果没有使用的话,就会把元数据删掉,也这就是一个淘汰元数据的策略。

open_file_cache_valid 是设置主动更新和检查的时间,表示每隔 30 秒检查缓存文件的元信息有没有对应的更新,如果有更新就需要去做对应的更新,它是一个更新的策略。

代理缓存优化

4529ed633cd2cfd2a902699e560d5ca8.png

最后一个内容就是代理缓存的优化了,代理缓存比较常见,比如说代理 访问PHP 后台服务并作缓存,也可以代理 JAVA 服务,缓存 JAVA后台服务的返回数据,注意这里不局限于通过 http_proxy来作代理缓存,只要 Nginx 支持的代理模式(UWSGI、SGI)都可以设置代理缓存。

代理缓存的特性是什么呢?首先通过 Nginx 作代理,可以支持实现动静态的分离,静态元素直接交给 Nginx 来处理,再把后端动态数据适当作缓存。通常做这种代理+缓存的架构,是能有效的提高整体网站的访问并发性能。

对于我们提到的服务端的缓存优化大多交给开发来做,这里就不再做非 Nginx 的缓存配置的讲解了。

好了,对于 Nginx 整体的缓存优化,本课时的内容就讲到这里,下一课时我将讲解 Nginx 负载均衡应用架构以及常见问题。

运维高手的36项修炼 - 前阿里巴巴运维专家 - 拉勾教育​kaiwu.lagou.com

版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_716177.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫 只爬取网页部分内容_Python爬虫~已爬取目标网站所有文章,后续如何只获取新文章(实例58)...

实例57的爬虫程序已经一次性获取了想要的文章,后续还会不定期的下载新文章,那怎么办呢?不可能每次都运行那个程序,然后重新从头到尾下载一遍吧。那样也忒傻了吧,坚决不干傻事。咱稍稍修改一个“更新爬虫”程序&#xf…

漫谈《大型网站技术架构》

转载请标明出处: http://blog.csdn.net/forezp/article/details/69196483 本文出自方志朋的博客 本文的内容来自阿里巴巴员工李智慧的著作《大型网站技术架构 核心原理与案例分析》,这本书很值得一看,故整理之。 一、大型网站的架构演化 1.1 …

php 验证码不正确,dedecms织梦网站后台登录一直提示验证码不正确

原标题:dedecms织梦网站后台登录一直提示验证码不正确有时候我们在登陆织梦网站后台的时候,我们按照上面显示的验证码进行输入;但是后台一直不能登录成功,一直提示验证码不正确,就是登不进去,但是我明明输入…

html5购物网站前言,HTML5的结构和语义——前言(一)

HTML5的结构和语义——前言(一)2018年03月28日| 萬仟网IT编程| 我要评论超文本标记语言(HTML)5 第一次向HTML 中引入新的元素。新的结构元素包括aside、figure 和section。新的内联元素包括time、meter 和progress超文本标记语言(HTML)5 第一次向HTML 中引入新的元素。新的结构…

网站

------------------------- ------------------ 转载于:https://www.cnblogs.com/Ph-one/p/4734547.html

网站301跳转到新域名

2019独角兽企业重金招聘Python工程师标准>>> 经常有站长提问如何做网站301跳转? 网站301跳转中有一种特殊情况,用户网站更换了域名,但有不想浪费老域名带来的流量,于是就需要做一个跳转,将老网站域名跳转到新新网站域…

lvs+keepalived实现LB热备实现网站高可用

在lvs高负载中,LB节点(也就是常说的DR)会存在单点问题;这里使用了keepalived来解决单点问题;实现冗余; 看图操作; LB1:eth0:192.168.182.133 (vip:eth0:0 192.168.182.2…

大型网站架构之分布式消息队列

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐&am…

ASP.NET Core 一步步搭建个人网站(2)_一键部署和用户注册登录

俗话说,磨刀不费砍柴工。为了更方便的进行项目管理,我们先将个人网站项目配置一下,满足以下2个目标: VS2017中支持Git存储库,绑定Github项目,实现本地VS程序与线上Github一键代码提交和同步;搭建…

网站Web项目树形菜单的实现过程(ExtJS+SpringMVC+Spring+Hibernate+MySQL)

常见的OA或者bbs或者网站,左侧往往带有菜单,使用者就可以通过菜单项进入响应的功能模块或者板块或者专区,如下所示:PKU的BBS明显使用了ExtJS的海王星主题,而且使用的就是普通的tabPanel组件实现的菜单。如下图下图是Ex…

Linux配置虚拟网站主机

1.1 问题本例要求以案例1的结果为基础,通过httpd网站服务器实现虚拟主机的支持,完成下列任务: 1)修改 /etc/hosts 文件,临时解决DNS名称识别问题 在文件尾添加“Web服务器IP地址 tts8.tedu.cn ne.tedu.cn”内容2&#…

学python还是php_米凯seo: 到底是学Python、PHP还是Ruby?

编程语言种类繁多,每种语言都有它们的独特的优势。开发者在对编程语言的进行选择时往往很讲究。因此,这篇文章将从各个角度对 PHP、Ruby、Python 三种当前比较流行的语言的优势和劣势进行对比,希望你能从中受益。 在进入主题之前,…

专业团队:推荐一个网站,生成巨幅文字注释

通过学习本文的知识,你将可以在你的项目代码里创造大量的注释。让你的注释闪瞎团队所有人的钛合金X眼,我们是专业团队。 Console.WriteLine(" ██╗ ██╗ █████╗ ██╗ ████████╗███████╗██████╗ ██╗ …

学习python必备的学习网站

Django框架学习必备网站: 官方网站 https://www.djangoproject.com/1.11版英文文档 https://docs.djangoproject.com/en/1.11/1.11版中文文档 https://yiyibooks.cn/xx/Django_1.11.6/index.htmlDjango Book 教程 https://djangobook.com/Flask框架学习必备…

大型系统的java中间件实践_《大型网站系统与JAVA中间件实践》读书笔记-消息中间件...

消息中间件1.消息中间件的价值1.1 透过示例看消息中间件对应用的解耦1.1.1.通过服务调用让其他系统感知事件发生的方式假设我们要做一个用户登录系统,其中需要支持的一个功能是,用户登录成功 后发送一条短信到用户的手机,算是一个用户安全的选…

基于django的视频点播网站开发-step3-注册登录功能...

用户注册登录是一个网站的基本功能,django对这部分进行了很好的封装,我们只需要在django的基础上做些简单的修改就可以达到我们想要的效果。在本讲中,我们会用到user中的用户授权方面的一些函数,还会对django中的user进行扩展&…

vueweb端响应式布局_壹起航:三点看出响应式网站建设好不好

有许多人听说过响应式网站模板(yiqihang.cn),也有人没有听说过响应式网站,有人说响应式网站作用不错,有人说响应式网站没有都去了解过,不好说终究好不好。那么响应式网站建设有哪些优势和缺点呢,如何知道这个响应式网站…

java 开发适合开发什么网站_Java开发这必备的10个参考网站,学习效率直线飙升...

作为开发者来说,必备的除了对编码的热情还要有自己的一套技巧,另外不可缺少的就是平时学习的网站。以下千锋广州Java小编收集的 Java 开发者必备的网站,这些网站可以提供信息、以及一些很棒的讲座 , 还能解答一般问题、面试问题等…

转:Chrome浏览器查看网站登录 Cookie 信息的方法

当我们使用自动签到等程序的时候一般都要用到网站Cookie,我们可以借助浏览器的扩展来获取Cookie信息,但其实通过浏览器本身的功能就可以查看Cookie信息。以Chrome类浏览器为例有以下三种方法。 chrome浏览器: 方法一: 1.打开设…

php seo技巧,十个对排名最有效的SEO​技巧

十个对排名最有效的SEO技巧。做网站排名的人都知道,一个网站能否达到设定的排名值是需要许多的技巧,这些SEO的技巧对于网站的排名来说有着不可替代的作用,在平时的优化当中细细留心,一定会对网站的排名优化有所帮助!第一&#xff…