关于使用又拍云存储提升WordPress网站性能的几点讨论

5月2日收到Eyon童鞋的邮件,他就《利用缓存插件W3TC与又拍云构建WordPress全站CDN》一文提出了一些问题。整理了一下我们之间的讨论,汇总如下。

先简单地进行了一个分析:

  • 以WP作为CMS进行应用的,主要集中在内容发布上以及访问者的评论互动。
  • 针对这一点,你可能会尝试提升网站性能,让访问者能获得更好的体验。一般来看,CMS平台可以从两个方面进行优化:动态请求与静态请求。
  • 对于动态请求,我们可以查看MySQL的请求数量来评估是否需要进一步优化。W3TC这款插件可以将页面的SQL查询以及页面Object缓存在Web服务器磁盘上(如果使用VPS或独立主机,也可以尝试配置memcached等内存级缓存),这样就可以完成了对于动态请求的缓存,对于首页以及访问量高的页面效果会比较显著。同时,也可以修改对WP模板中的一些不必要查询静态化处理,比如RSS地址、CSS路径等。如果发表评论比较频繁,这块可能会压力较大,可以考虑使用类似“多说”这样的社会化评论系统——评论提交、过滤以及展示均由多说处理,评论内容同时备份到WP数据库,以便日后随时切换。
  • 我们再来看静态请求。通常是指CSS、JS、文章中插入的附件等静态文件,这时候又拍云就可以出马了。它实际上起到了“带有CDN服务的云存储”的作用。配合W3TC插件,可以在不改变原有配置的情况下,将这些静态资源在Web服务器本身上传的同时,也发送一份到又拍云。而访问者在浏览时会根据自己的网络就近请求又拍云上的资源(这一步的原理类似CDN)。

接下来,再一起来看提出的几个问题。

Q1: 使用又拍云做全站 CDN ,是不是就不需要使用某插件将图片单独传到又拍云了呢?
A: 准确的说,是使用了W3TC这款插件后,不再需要使用别的插件单独上传图片到又拍云了。

Q2: 如何保证在用户访问页面时,本应该缓存在本地的数据能够在瞬间缓存到又拍云上呢?(上传速度有那么快么)
A: 这其实就是上面分析的第三点了,用户访问时缓存在本地Web服务器上的是动态请求这一部分,它不应该也不会被发送至又拍云。

Q3: 缓存页面都有个过期时间,是不是在页面过期之后,用户访问又得从原服务器请求一次呢?
A: 是的。本地缓存过期时间可以在W3TC中设置。

Q4: 缓存页面是将 header、footer 等内容都缓存到一个完整的页面上,那么是不是每次请求这个缓存时,其实产生了一些不必要的流量呢?
A: 这依然需要看第三点,其实缓存header、footer这些,目的是为了减少动态查询,节约的重点不是流量而是Web服务器资源。

Q5: 如果想要让用户访问起来看不到任何区别,是不是就应该绑定网站的主域名,而不是一个二级域名呢?
A: 这其实你是说的全局CDN服务了,又拍云是无法实现的,恐怕只能购买传统CDN服务商的服务了。又拍云的静态缓存,可以使用其提供的三级域名,也可以绑定二级域名。

Q6: 说说这个方案的缺点吧。
A: 毫无疑问,它对于站长而言,产生了除Web主机外的一笔新支出:) 所以,首先就有必要平衡是否需要这项服务,当然,相对于传统CDN的计费方式与价格而言,又拍云毫无疑问亲切很多。除此之外,会有一些在修改模板时有一些不方便,需要将模板中调用的静态文件在修改后再更新一次到又拍云上。

Q7: 上传的图片或者附件会首先在本地,那么再通过w3tc缓存插件上传/缓存到又拍云,是必然需要一个过程和时间的,那么这个时间是多长,你有没有研究过?
A: 因为我用的是美国主机,目前看上传附件推送到又拍云的时间相对于上传到Web服务器本身而言,已可忽略不计,个人未感知到延迟。国内主机尚未尝试过。

Q8: 如果我在后台通过 w3tc清空缓存,它是否会清空又拍云上的缓存内容?还是需要我到又拍云后台中手动刷新缓存?
A: 如前文所述,在W3TC配置中清空的缓存是页面的动态缓存,存放在Web服务器磁盘(或内存)中的,与又拍云上的静态资源并无关系。

Q9: 这两种方案哪种比较好?第一种会不会省一部分流量呢?
A: 经过之前的一番折腾之后,我个人倾向于第二种第一种方案并不会节约流量,相反会提升WP的复杂度,需要手工编辑theme中的各种路径,而wp-includes下面的js是有可能在WP自动升级时被更新的,这样每次都需要重新上传到又拍云,比较麻烦。之所以当时选择了W3TC,主要就是觉得它对于网站而言是透明的,即便因为某种原因需要暂停又拍云或其他CDN服务,也可以灵活切换会Web服务器本身。

 

最后,特别需要说明的是,以上的讨论仅限于我自己平时的有限折腾经历及思考,如有谬误或更好的解决方案,欢迎在评论中指出,先行谢过:)

Ps: 如果你想尝试一下又拍云存储方案,我这里有一批优惠码,欢迎自取。

 

关于使用又拍云存储提升WordPress网站性能的几点讨论》有28个想法

  1. lijxse

    thanks,看到了,我最近也打算购买又拍云,但是我目前用的是80/月的香港服务器合租,如果换又拍的话我打算用一个廉价点的香港虚拟主机+又拍云,我不知道这样会不会比我现在的快。

  2. Acora

    个人感觉 针对大多数主机在国外的博客而言,最省钱也最实效的办法,是使用600M的虚拟主机/10G以内的月流量+又拍云存储+Hacklog Remote Attachmen+wp super cache。但如果从简便程度上来说,w3tc的全站CDN肯定更简便轻松易维护,但更耗流量,费用也相对更高,毕竟后台我感觉是不需要CDN的,前台CDN就成了。W3TC的方式适合高福帅使用,俺这种穷屌丝还是Hacklog Remote Attachmen吧。。另外网上盛传的W3TC的CPU资源占用问题也不知现在新版解决得怎么样了,N久没碰过这货

  3. Summer

    谢谢Acora分享的经验!如果希望CSS、JS等也能CDN加速,那么W3TC全站CDN会更好。W3TC可以设定是否对登录后的前台页面缓存(后台是不缓存的)。个人认为W3TC+又拍云全站CDN最大的好处是日后切换灵活。最最重要的是,每个站点都有自己的实际情况,找到适合自己当前需求的方案就好。

  4. Acora

    对于俺这种穷屌丝来说。。只好修改主题和插件,把所有的JS、CSS都手动搬去又拍云。。是比较耗时,还好插件不多。

  5. 聚沙笔记

    博主你好 我按照你的方法2 安装了W3TC插件 为什么后台总是提示ftp无法连接呢? 而且前台页面的静态文件也没有替换为又拍云的地址? 是什么原因?

  6. Max_Upyun

    感谢Summer 对又拍云WP站点性能提升分析。针对Upyun的使用,我这里有一些已经在做WP插件的朋友,可以相互介绍的。可以微博我@Max_Upyun

  7. 门软

    问下博主这款插件和WP super cache 能一起使用不?还有就是网站上的静态文件复制到又拍云上去,具体是复制到哪个文件夹,怎么放呢?我也想用这款插件,目前使用的是WP super cache,感觉还是挺不错,既然有了又拍云,也想把CDN的功能使用出来。望指教。

  8. Summer 文章作者

    Hi~1. 缓存类插件不建议多个同时使用。2. W3TC中启用CDN选项后,它会告诉你需要推送哪些目录的,不需要特别操作。

  9. 世界之最大全

    我想问下,将当前空间中的附件、JS以及wp-includes等静态文件都用FTP上传至又拍空间即可,这是否要按目录结构上传,是不是就是把整站都上传到又拍云了

  10. Summer 文章作者

    1. 需要保持目录结构。2. 只需要上传静态文件就好,php等不必上传。

  11. 李金龙

    我的意思是 如果用W3TC+又拍来加速的话,CSS js 和图片的路径不会换成又拍云的吗?我的地址都没有更换,很是郁闷!

  12. Summer 文章作者

    1. 亲自访问看看,直观上是否有感受。2. chrome开发者工具等都可以帮助量化。3. 17ce.com之类还可以看到不同网络服务商的访问情况。根据这些对比之前的即可知道效果了。

  13. 行星

    写的真详细,其实如果不介意放在国内的云服务器就真没必要什么上又拍云啥的了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注