当前位置:首页 > 移动互联 > 使用 Varnish 优化移动端站点

使用 Varnish 优化移动端站点

admin 3年前 348 0

使用 Varnish 优化移动端站点 移动互联 第1张

文/公子肥马轻裘

想象一下:你刚刚发布了一篇博文,并分享到了社交网络。然后,这篇文章恰巧被大 V 看中再次分享了出去,立即吸引了数百粉丝的目光,引导他们涌入了你的网站。看到这么多的访客量,以及它们的评论,你内心激动不已。突然之间,你的网站挂掉了,满屏的数据连接错误……

或者假想另一种情景:你一直很努力地创业,某一天,一个大 V 在社交网络表达了对贵公司的喜爱之情,字里行间满满的赞叹。关注这个大 V 的粉丝心动了,又涌入了你的网站。不幸的是,点击连接后却无法进入你的网站,或者进入后无法注册用户,甚至页面响应超时,无法获取产品的序列号。尽管你在社交网络上对此非常诚恳地表达了歉意,但粉丝们都不会再有兴趣。

这些假想其实非常普遍。在我的工作中,就经常发现,当网站信息在社交网站流传开来的时候,移动设备的访问请求就会骤增。这也表明,在社交网络中,越来越多的人开始使用移动设备,而不是传统的桌面应用。此外,大多数的移动用户都在使用公共 Wi-Fi 以及其他低速网络来访问网站。所以,快速加载网站的任何优化措施,都会有利于用户的访问。

在本文中,我会向你介绍 Varnish 网页应用加速器(Varnish Web application accelerator)——这是一个免费、简单的工具,有助于改善大规模突发性访问状态下的响应能力。

亮点

对于大多数的网站来说,众多用户请求访问的核心内容大都是一致的——尤其是每天都会更新内容的门户网站。不用多说你也会理解,图片、CSS 和 JavaScript,这些静态资源往往有较长的缓存周期期(译者注:有利于在不同页面间复用)。但你可能没有深入思考过,通常在博客平台或者是内容管理系统中,响应用户的请求后,所返回的数据内容,大多也是相同的。

来自社交网络的用户进入一个博客后,并不会请求完全一致的信息。除了图片、JavaScript 和 CSS,这些信息还包括 PHP 动态生成的内容,以及从数据库查询到的数据。访问博客中的某一篇文章,所需要发送的每一条请求,不仅仅是在获取网络服务器提供的静态资源,还需要使用 PHP 脚本,使用数据库连接以及数据库表单检索等功能。

数据库连接的数量越多,Apache 需要处理的进程就会越多,而总的处理能力是有限的。相应的,访客的数量越多,服务就会越不稳定,挣到的钱就会越少。

这就是类似 Varnish 的 HTTP 反向代理服务器发挥作用的地方。如此一来,从浏览器发出的请求,不再直接到达创建和维护网页的服务器,而是到达 HTTP 缓存服务器。如果缓存服务器中存在所需页面,那么直接从服务器的内存返回相应的资源,不再动用 Apache 服务器和数据库。如果所需页面不在缓存中,那么就像传统方式一样,使用 Apache 服务器来处理。Apche 处理完成之后,就会将这个页面保存到 HTTP 缓存服务器中,等到下一次请求相同页面时就可以直接返回了。

将页面保存在内存中,其响应速度远快于将其保存在硬盘中。此外,当请求的页面位于 HTTP 缓存服务器中时,就无需调用 PHP 或者数据库来处理相关操作。这也让 PHP 和 服务器能够有更多的性能来处理更繁重的进程和连接。比如,上面提到的被大 V 称赞的那家初创公司面临的窘境,众多粉丝点击的链接其实只是网站中的少数几个页面——而这些完全可以保存在高速缓存服务器中,当需要时可以直接从内存响应请求。此时,准备注册的用户就会感到整个流程非常顺利,因为后台脚本和数据库连接的处理能力非常宽裕,完全不受突发性请求的影响。

原理

下面这个示意图,展示了 Apache 服务器响应请求后生成站点内容的基本流程。在这个例子中,为了请求相同的页面,一共从浏览器发送了五条指令给 Apache,而 Apache 对每条请求都做了详细的处理。

使用 Varnish 优化移动端站点 移动互联 第2张

是的,Apache 处理了每一条请求——图像,CSS,JavaScript 和 HTML 文件。如果 PHP 中有某个文件,就会解析一次。如果需要请求数据库的信息,那么就要执行一次数据连接,进行 SQL 查询等操作。最终,在 Apache 返回给浏览器信息之前,数据库返回相关信息组装成完整的页面。

如果我们在 Apache 之前使用 Varnish,就可以组成这样的一个流程:

使用 Varnish 优化移动端站点 移动互联 第3张

如果浏览器请求的资源和页面已经存在缓存中,那么 Varnish 就会直接从内存返回这些资源,而 Apache、PHP 和 MySql 完全不需要进行重复的操作。如果浏览器请求的数据不在缓存中,那么 Varnish 就会将相关的处理工作转移给 Apache,让 Apache 处理细节。这种流程的优势就在于,只让 Apache 处理必要的工作,一旦生成了所需的资源,该资源就会被保存到缓存服务器的内存中。当再次有请求访问这些资源时,Varnish 就完全有能力应付了。

这个工具还有另一项好处。在 Varnish 的术语中,你所配置的 Apache 服务器,被称为“处理后台”。Varnish 允许配置多个处理后台。所以,你可以同时运行两个网络服务器,比如,一台使用 Apache 处理 PHP 页面,一台使用 nginx 处理静态资源。在 Varnish 中设置成功后,就可以从正确的服务器获取相应的资源。在本篇教程中,我们将着眼于一个简单的示例。

发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

相关文章

盛大游戏签署最终私有化协议 估值19亿美元

盛大游戏签署最终私有化协议 估值19亿美元

【TechWeb报道】4月4日消息,盛大游戏宣布,已与凯德集团(CapitalholdLimited)及其全资子公司CapitalcorpLimited签署最终的私有化协议。...

谷歌悄然开发电池项目 支持硬件业务扩张

谷歌悄然开发电池项目 支持硬件业务扩张

谷歌公司【TechWeb报道】4月11日,谷歌一直在悄悄开发更好的电池,以支持公司向消费电子产品和其它硬件领域的扩张。消息人士透露,早在2012年年底,谷歌一个由苹果前电池专家拉梅什&middo...

QQ for Apple Watch功能首曝光:QQ色彩社交来啦

QQ for Apple Watch功能首曝光:QQ色彩社交来啦

4月10日下午15点01分,AppleWatch将正式开始线上预定,随着AppleWatch真机的不断曝光,大家开始更多的关心苹果围绕AppleWatch所构建的生态是什么样,以及在Apple...

不能详细的分析竞争者网站?至少要学会这些基本的分析...

不能详细的分析竞争者网站?至少要学会这些基本的分析...

    近期,一直有不少站长前来A5营销咨询的问题,而在这些咨询者里有一些是因为竞争对手的网站比自己的网站权重高、排名高,从而想去分析下竞争者网站为什么优化的这么好?然而有一点,从这...

如何利用robots.txt 优化 wordpress博客?

如何利用robots.txt 优化 wordpress博客?

笔者在百度站长平台检测自己的博客时,出于优化的惯性,对博客的Rbots进行了检测,进而在百度搜索了wordpress博客robots的写法设置问题,看了很多wordpress高手对ro...

2017世界网速排名公布,中国7.6Mbps,你家呢?

2017世界网速排名公布,中国7.6Mbps,你家呢?

 现在很多人每天最离不开的就是网络,每走到一个地方,可能都要找找有没有无线网,随口第一句问的就是WiFi密码是多少?有时候网速慢也会让人抓狂。“电脑那些事儿”注意到在5月19日左右国际上最大...

品牌营销:产品经理思维如何挖掘用户场景

品牌营销:产品经理思维如何挖掘用户场景

时趣君说我们之前发布过一篇文章《产品经理思维如何颠覆营销》,大家读过之后觉得内容非常不错,而且非常积极地参与了文章末尾的投票,结果如下: &nb...

长点见识:网站加载速度到底有多重要?

长点见识:网站加载速度到底有多重要?

网站加载速度重要性有多大呢?小编一直有研究搜索引擎优化这方面的知识,也了解到这一块十分重要,是每个商业网站都必须关注的,曾经还专门买过《Web性能权威指南》,受益匪浅。不过今...