雅酷SEO论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 588|回复: 0
打印 上一主题 下一主题

Varnish 优化移动端站点

[复制链接]

635

主题

0

好友

6913

积分

论坛元老

Rank: 8Rank: 8

  • TA的每日心情

    2015-7-3 17:11
  • 签到天数: 139 天

    连续签到: 1 天

    [LV.7]常住居民III

    跳转到指定楼层
    楼主
    发表于 2015-4-10 15:19:11 |只看该作者 |倒序浏览
      想象一下:你刚刚发布了一篇博文,并分享到了社交网络。然后,这篇文章恰巧被大 V 看中再次分享了出去,立即吸引了数百粉丝的目光,引导他们涌入了你的网站。看到这么多的访客量,以及它们的评论,你内心激动不已。突然之间,你的网站挂掉了,满屏的数据连接错误……
      或者假想另一种情景:你一直很努力地创业,某一天,一个大 V 在社交网络表达了对贵公司的喜爱之情,字里行间满满的赞叹。关注这个大 V 的粉丝心动了,又涌入了你的网站。不幸的是,点击连接后却无法进入你的网站,或者进入后无法注册用户,甚至页面响应超时,无法获取产品的序列号。尽管你在社交网络上对此非常诚恳地表达了歉意,但粉丝们都不会再有兴趣。fsb010.com
      这些假想其实非常普遍。在我的工作中,就经常发现,当网站信息在社交网站流传开来的时候,移动设备的访问请求就会骤增。这也表明,在社交网络中,越来越多的人开始使用移动设备,而不是传统的桌面应用。此外,大多数的移动用户都在使用公共 Wi-Fi 以及其他低速网络来访问网站。所以,快速加载网站的任何优化措施,都会有利于用户的访问。
      亮点
      对于大多数的网站来说,众多用户请求访问的核心内容大都是一致的——尤其是每天都会更新内容的门户网站。不用多说你也会理解,图片、CSS 和 JavaScript,这些静态资源往往有较长的缓存周期期(译者注:有利于在不同页面间复用)。但你可能没有深入思考过,通常在博客平台或者是内容管理系统中,响应用户的请求后,所返回的数据内容,大多也是相同的。
      来自社交网络的用户进入一个博客后,并不会请求完全一致的信息。除了图片、JavaScript 和 CSS,这些信息还包括 PHP 动态生成的内容,以及从数据库查询到的数据。访问博客中的某一篇文章,所需要发送的每一条请求,不仅仅是在获取网络服务器提供的静态资源,还需要使用 PHP 脚本,使用数据库连接以及数据库表单检索等功能。
      数据库连接的数量越多,Apache 需要处理的进程就会越多,而总的处理能力是有限的。相应的,访客的数量越多,服务就会越不稳定,挣到的钱就会越少。
      这就是类似 Varnish 的 HTTP 反向代理服务器发挥作用的地方。如此一来,从浏览器发出的请求,不再直接到达创建和维护网页的服务器,而是到达 HTTP 缓存服务器。如果缓存服务器中存在所需页面,那么直接从服务器的内存返回相应的资源,不再动用 Apache 服务器和数据库。如果所需页面不在缓存中,那么就像传统方式一样,使用 Apache 服务器来处理。Apche 处理完成之后,就会将这个页面保存到 HTTP 缓存服务器中,等到下一次请求相同页面时就可以直接返回了。
      将页面保存在内存中,其响应速度远快于将其保存在硬盘中。此外,当请求的页面位于 HTTP 缓存服务器中时,就无需调用 PHP 或者数据库来处理相关操作。这也让 PHP 和 服务器能够有更多的性能来处理更繁重的进程和连接。比如,上面提到的被大 V 称赞的那家初创公司面临的窘境,众多粉丝点击的链接其实只是网站中的少数几个页面——而这些完全可以保存在高速缓存服务器中,当需要时可以直接从内存响应请求。此时,准备注册的用户就会感到整个流程非常顺利,因为后台脚本和数据库连接的处理能力非常宽裕,完全不受突发性请求的影响。
      原理
      下面这个示意图,展示了 Apache 服务器响应请求后生成站点内容的基本流程。在这个例子中,为了请求相同的页面,一共从浏览器发送了五条指令给 Apache,而 Apache 对每条请求都做了详细的处理。
      是的,Apache 处理了每一条请求——图像,CSS,JavaScript 和 HTML 文件。如果 PHP 中有某个文件,就会解析一次。如果需要请求数据库的信息,那么就要执行一次数据连接,进行 SQL 查询等操作。最终,在 Apache 返回给浏览器信息之前,数据库返回相关信息组装成完整的页面。
      如果我们在 Apache 之前使用 Varnish,就可以组成这样的一个流程:
      如果浏览器请求的资源和页面已经存在缓存中,那么 Varnish 就会直接从内存返回这些资源,而 Apache、PHP 和 MySql 完全不需要进行重复的操作。如果浏览器请求的数据不在缓存中,那么 Varnish 就会将相关的处理工作转移给 Apache,让 Apache 处理细节。这种流程的优势就在于,只让 Apache 处理必要的工作,一旦生成了所需的资源,该资源就会被保存到缓存服务器的内存中。当再次有请求访问这些资源时,Varnish 就完全有能力应付了。pifubaiban.net
      这个工具还有另一项好处。在 Varnish 的术语中,你所配置的 Apache 服务器,被称为“处理后台”。Varnish 允许配置多个处理后台。所以,你可以同时运行两个网络服务器,比如,一台使用 Apache 处理 PHP 页面,一台使用 nginx 处理静态资源。在 Varnish 中设置成功后,就可以从正确的服务器获取相应的资源。在本篇教程中,我们将着眼于一个简单的示例。

    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    百度SEO教程|谷歌SEO学术|百度SEO谷歌|网站SEO优化|雅酷SEO论坛  

    GMT+8, 2024-11-1 09:28

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部