1
soulteary OP 补充一张图,对wordpress使用hhvm+redis后的服务端rt时间
如果你的时间数据比图中小,说明你的网络相当的好/线路连接质量好/网站没被压测(误...) http://photo.weibo.com/1220149481/wbphotos/large/mid/3797416047909501/pid/48ba00e9gw1eo48906f2nj21kw0pttir |
2
hhacker 2015-01-10 10:52:49 +08:00
io太重要了,俺的渣渣vps就遇到过采集程序拖死机器的事。
苏洋你不在新浪了么,地球真小哪里都能看到熟人。 |
3
stiekel 2015-01-10 10:55:38 +08:00
上个月刚刚换到了hexo,实在是受不了wordpress的编辑器。
|
4
kmvan 2015-01-10 10:56:12 +08:00
你把页面存为 静态html 文件了,这样说明不了有什么技术上的技巧。当然这也是加快的手段之一。
我认为,要让wp跑得更快,存静态是不够的,还得看各种前端资源,服务端优化等。这些才是难度所在,所以官方也不再考虑性能优化了。 |
5
soulteary OP |
6
kmvan 2015-01-10 11:16:05 +08:00
@soulteary 话说,为啥十一点内容,你就看到了一点cache...莫非我特别高亮了这个内容(捂脸)
因为刚刚你的gitmd撞墙了,看不到,就看到一张图。 我对比了一下,lz的是国内主机,我的是 国外主机。lz用seajs,我也是用seajs,速度不分上下。但实际上,除去国内外网络响应的速度,说不定我的不用html静态缓存比lz的更快。 上图是lz的首页加载完毕时间 上图是我的首页加载完毕时间。 总的来说,我不大喜欢跟使用静态html页面缓存的站点相比较,这样太无趣了,没法从程序上比较优化的优劣。 (提到wp我就比较有兴趣,一起探讨对wp的优化) |
7
frankzeng 2015-01-10 11:21:18 +08:00
换掉被墙的网址,速度刚刚的。
|
8
harmy 2015-01-10 11:26:16 +08:00
把你的gistfile1.txt扩展名改成md,阅读体验会比较好。
|
9
soulteary OP @kmvan 纳尼!gitst会被墙(家用网络自带穿越属性,没有留意过),只是因为v2不完全支持md,所以用了gist,疏忽了...
你忽略了网络连接质量的问题,你访问我的主机的速度并不快。 我个人访问的时候,都是40~70ms。 并且机器性能差异,hk这台性能较DO纽约5$和Linode 10$费利蒙来讲,其实弱了很多(非SSD, CPU也...),但是如同文章内所言,即使压满了,瓶颈也在带宽不在CPU,不在硬盘IO上。 如果你不使用W3之类的静态话缓存的话,那么你和我的比较结果(抛开网络因素),其实是你的程序runtime+程序逻辑 和 我的程序runtime+redis 跑分的比较,如果带宽无限的话,我们的差距,会在runtime 内存cache和mysql io上拉开距离。 |
11
soulteary OP @kmvan 忘记提了,cache对于wp应该有以下几种,而非单纯的页面cache。
- proxy cache,nginx带了 - runtime cache,hhvm带了 - mysql cache,wp用object-cache缓存到了redis - page cahce,就是你吐槽的那个图= =... 所以,如果真的同样的程序本地跑分的话,你提到的不使用缓存会让CPU飙的很有节奏= = |
12
kmvan 2015-01-10 11:44:15 +08:00
40ms 还不快吗?是我主机的10倍!!
确实我不使用静态html缓存,速度会慢于你的静态html缓存。但我本来就没用html缓存。 实际上我的vps,50刀/年,也就是4刀/m,性能就不提了吧,这个价应该算超低端的。 不过我觉得,要比较的话,真不应该拿个静态页面来比较。lz要不你关掉静态html缓存,写上 php shutdown 时候的mysql query数量和页面生成的耗时,这样才能看出站点的优化质量。 |
13
kmvan 2015-01-10 11:55:05 +08:00
@soulteary 所以,如果真的同样的程序本地跑分的话,你提到的不使用缓存会让CPU飙的很有节奏= =
所以我就说,你拿个 html 静态文件来说优化方案,这真的没什么可以让人眼前一亮的。缓存并不是代表站点优化的优劣。况且本身wp自己的程序性能并不是十分出众,有一定的框架局限。特别是在mysql查询上。也就是经常被人笑话的“循环里面开查询”。 你要是能写一下关于优化wp核心,例如核心的查询数,程序执行思路等,那该多好。咱小白们看的就是这些核心原理啊 |
14
soulteary OP @kmvan 喂喂....cache不是只有page cache啊= =...(见#11)
好主意,我把debug页面里输出一下mysql queries和时间消耗。 reply #13 ,突然就想把主题和插件再推到github上了(之前因为种种原因撤掉了,写的太low太复杂了...) |
15
kmvan 2015-01-10 12:09:10 +08:00
就是啊,习武之人用拳头交流。歌唱家用音乐交流。灵长类肯定要用代码交流,你不给出代码,情感怎么传达到别人体内的深处?坐等 github 地址
|
16
soulteary OP @kmvan 233...即使骚年你这样说感动了我,我也不会把没有完全完成态的主题push上去的= =...
话说,我的资源(assets,cache,attachment)基本都分离出去了(no wp attachment),即使比较mysql 请求数,感觉也不公平啊= = |
17
xiaoz 2015-01-10 12:18:38 +08:00
我的wordpress放在DO上的,小小的做了下优化,不知大家打开速度如何: http://www.xiaoz.me
|
19
kmvan 2015-01-10 12:27:44 +08:00
@soulteary 话说,我的资源(assets,cache,attachment)基本都分离出去了(no wp attachment),即使比较mysql 请求数,感觉也不公平啊= =
我认为,一个wp站速度快不快,除了程序优化外,相当重要的一部分是,使用起来够不够方便。例如主题装了就直接能用,动静分离,minify,cache之类的,combo之类的,在不同环境下,都由程序自动化完成,这种主题,简直就是杰作。对于使用者来说,无论小白还是大神都能很好地照顾到,这样才赞。难道lz的wp主题不是这样的吗? |
20
wsph123 2015-01-10 12:30:26 +08:00
快这个。。。建立在wordpress上真是不好做呀
|
21
soulteary OP @kmvan gulp build后,然也,gulp build前,定然不是。另外追求杰作神马的,涉及到过渡优化了。
|
22
yytsjq 2015-01-10 12:37:51 +08:00
WordPress 如何启用 Memcached 内存缓存
http://blog.wpjam.com/m/wordpress-memcached/ WordPress 内存缓存终极加速插件:Batcache http://blog.wpjam.com/m/batcache/ 这样 WordPress 自身就足够快了吧。。 |
24
kmvan 2015-01-10 12:43:59 +08:00
@soulteary gulp build后,然也,gulp build前,定然不是。另外追求杰作神马的,涉及到过渡优化了。
非过度优化。一款主题,你需要的是保证无论在虚拟主机或 vps上,都能正常跑起来(除去php版本需要)。首先要保证能work,才能进行 optimize~。也就是兼容性,不同的环境和组件有不同的兼容方案,这个应该是基本吧。 |
25
typcn 2015-01-10 12:53:03 +08:00 via iPad
不如真的把页面缓存起来,编辑或发表的时候自动刷,毕竟是博客不是论坛。
做那么多优化有什么用,关键就是 1.不要使用 wordpress 2.不要使用外链,就算使用也要异步加 3.使用国内服务器,有条件的话买cdn 4.渲染出的内容进行缓存,而不是缓存数据库中的数据 http://blog.eqoe.cn 单核服务器,博客程序占 80-200 mb 内存,不加 cdn 800rps,加上的话那就是 cdn 承受量了,与程序无关。 |
26
wsph123 2015-01-10 12:56:02 +08:00
|
27
soulteary OP |
28
typcn 2015-01-10 13:08:47 +08:00 via iPad 1
@wsph123
我用的 pad 没法看源代码。 看回复大概是 读取json,我不觉得你这样好,搜索引擎真的收录困难。 我博客是,搜索引擎抓取静态内容,支持 html5 的浏览器点击链接后读取 json 进行加载。 然后国内解析到百度 cdn,国外解析到 fastly ,全部设置缓存。 我写完这个博客系统都没敢来 v2 发,默默的传了 github,因为后台有点残缺,还有点 bug,没 rss。 |
29
kmvan 2015-01-10 13:09:31 +08:00
程序放出来吧,我本机跑一下就知道快慢了。
|
30
soulteary OP @wsph123
- 脚本方面似乎还需多下功夫,```Uncaught ReferenceError: $ is not defined```。 - 针对自己内容的受众群体做优化没有问题,如果只是一时把玩不考虑蜘蛛也无妨。 - 文件IO不会快过内存IO。 - 基于内存的cache更便于修改。 |
31
typcn 2015-01-10 13:16:40 +08:00 via iPad 1
@soulteary 我说了我加了 cdn,我的博客服务器是 2m 带宽,800 rps 是本机测出来的。
我只是吐槽楼主说的太多了,太多没有必要的。我全文看了。 我的 2m 带宽博客 + cdn ,在 12306 查询火了的那一天,几十万 ip, cdn 后台显示 2.1 亿请求 (当然包括攻击的),虽然卡死了一会,但是把 mysql 换成 redis 进行泄漏查询后依然可以秒开了。 |
32
soulteary OP @typcn 其实页面做好 _escaped_fragment_ 标记,蜘蛛是可以收录的。
或者提供sitemap对蜘蛛提供单独的版本以及rss全部输出。 聊好不好,还是看需求和受众,如果受众没有IE8以及以下,以及古老的客户端等(文内我记得提到了。) 那么你使用新的history对象没有问题的,否则要各种shim了,包括基础库。 |
33
typcn 2015-01-10 13:21:10 +08:00 via iPad
@soulteary 我没用 shim,你可以看除了 jq 和 svg 我没有调用任何库, css js 都是自写,很精简。
你可以看 scripts.js 我是检测到 history.pushState 对象存在的情况下才会开启 ajax 加载,否则静态。 |
34
emric 2015-01-10 13:24:03 +08:00
讨论也要拿出讨论的态度对吧, 总之替楼主觉得不爽.
|
35
soulteary OP |
36
soulteary OP |
37
soulteary OP @wsph123 可以考虑一下 https://developers.google.com/webmasters/ajax-crawling/docs/getting-started 以及文内提到的客户端cache(当然,最好配合服务器三方模块,使用大量200cache)
|
38
typcn 2015-01-10 14:15:48 +08:00
|
40
soulteary OP @typcn 所以推荐内存缓存,flush_all/flushall,妥妥的,而且基于时间的话,缓存下来的db真的不大,重启后预热也很快。
扯个闲的,国内政策越来越紧了,想正儿八经的用个国内CDN都得要备案号,前一阵想再备案一次(真的是应该养着07年的老备案号....),然后看到大家有遇到缴纳培训费的,有被各种相关部门计划掐油的,想想,有这些个幺蛾子,真不如国外扔DO或者github page上,国内扔BSP算了。 阿里云根据机房IP段概率性不能git clone...搭自己环境得各种scp,于是果断放弃了。 或许把ghost改完后,一时闹热就搬回来了。 |
41
wsph123 2015-01-10 14:32:21 +08:00
@soulteary
1. 噗,你看看你当地运营商有没有劫持你访问的js文件 (●'◡'●)ノ♥~~~ 2. 打字真轻松,看看搜索引擎快照再说嘛? 内存cache这个不错 ps:用PS输出 256位透明的png-8 文章怎么没看到呀?(疑问 |
42
xiaozhizhu1997 2015-01-10 15:28:41 +08:00 via Android
这个…难以找到支持转发HTTPS的CDN啊…
国内那些需要备案的就算了。 |
43
soulteary OP @wsph123
1. :D 2. cache丢了样式,顶部的样式太简陋了。 ps: 这个你还没折腾出来啊。 给你个线索好了,找到这个素材的出处,然后折腾一下就有了。 http://www.soulteary.com/wp-content/themes/OWL/img/go-top.gif 另外,有感兴趣的童鞋看可以参考下面的微博链接中的关键词解决问题。 http://weibo.com/1220149481/BBY02f4MB?from=page_1005051220149481_profile&wvr=6&mod=weibotime&type=comment |
44
soulteary OP @xiaozhizhu1997 ,@typcn 提到的fastly可以,不过结合自己情况考虑下能不能接受概率性被Block的情况,毕竟上面有蛮多敏感内容,而内容审查又越来越严。
|
45
wsph123 2015-01-10 15:44:57 +08:00
@soulteary
随便访问个网页内容都能被运营商替换的你连给爬虫看的没样式的HTML也能喷简陋 确实蛮拼的。。。 做个png-8透明图而已何必那么费劲。连说出的话都能被轻易推翻 你用PS输出PNG-8 256位透明再说呀 说好的文章呢? 在微博虚心求教都能被你嘲讽,哪来的那么大自信呀? |
46
lemonda 2015-01-10 15:45:44 +08:00 1
现在网页越来越大,优化速度确实是很值得讨论的话题。楼主的提纲涉及很多内容,建议限定下范围或者一个一个话题来讨论,现在回复有点乱,不好参与。
另,参与讨论的 V 友: 口语化容易带来没必要的相轻,优化无止尽,三人行必有我师嘛。 |
47
soulteary OP |
48
wsph123 2015-01-10 15:55:05 +08:00
|
49
soulteary OP @wsph123 歪题和断章取义就没意思了,不过还是那句话,无意义的争论等于浪费时间。建议看下#36。
ps,小组内94年的童鞋也有一位,不见其言谈有不得当处。很多事情和年龄有关,也无关,还是那句话,和主题无关,不妨出门左拐挂号。 至于是否虚心提问,请参考论坛内的如何提问。 |
50
yylzcom 2015-01-10 16:17:20 +08:00
对于个人博客来说,mod_pagespeed和spdy+静态其实已经能解决很多问题,就是担心mod_pagespeed会导致兼容性问题,暂时还是手动优化,如果mod_pagespeed能稳定成熟,那时间成本会减少很多
|
51
soulteary OP @yylzcom tenginx2.02开始支持SPDY,好像后面还修复了一个漏洞,可以考虑替换apache->nginx or tenginx。不过非包安装的话,需要自己做进程管理,而不能用系统自带service命令管理蛮遗憾。
|
52
wsph123 2015-01-10 16:26:39 +08:00
|
53
yylzcom 2015-01-10 16:51:27 +08:00
@soulteary debian7.7 wheezy的nginx 1.62已经默认编译进spdy了,关键是还要ssl证书,可能和很多用户还不愿意花费这个精力
mod_pagespeed在apache下启用很简单,但是据说一些js会报错,另外一些图片也会有问题,否则这个傻瓜化的模块能有效减小css、js尤其是图片的体积和部分减少tcp连接(合并css和js)。 让我单独优化首页、或者少量几个页面的图片还行,如果是资讯类大量文章的图片来手动优化,时间成本还是过高了 目前我采用nginx+apache…… |
54
soulteary OP @yylzcom 极力建议你本地虚拟机试用下tenginx,可以根据url合并资源。
ssl的话,还得考虑对https的页面改进refer判断相关,目前我是仅对自己的管理软件的vhosts启动了ssl,on 的时候没有敢开SPDY,还是保守了。 目前开keep-alive已经减少不少链接时间,感觉很赞。 |
55
soulteary OP @yylzcom 内容比重高的站点其实静态化就足够了,如果不对时间“斤斤计较”的话,如果你愿意,使用nginx 替换组件,替换资源的图片地址为thumb类库+地址,可以最低成本解决问题。
我之前有段时间是nginx+apache,然后nginx开了主从代理apache,就图apache可以强制代理,[L]你懂的。然后ps -e 感觉子子孙孙的甚是不爽,于是干掉了apache,单纯的使用了nginx |
56
andybest 2015-01-10 16:58:20 +08:00
楼主看看我这个问题:/t/160905
|
58
soulteary OP @andybest 这个事情没有涉及过多,只能说一些个人的想法了。
我感觉实际情况复杂于单纯的TTL存活时间。该ISP的DNS服务器的储存空间是有限的,冷数据应该会被挤掉吧,如果他有缓存机制。 这里应该涉及到递归查询和迭代查询了,如果是递归,一级一级网上找,顶级服务器很容易冷数据挤掉吧。 如果是迭代查询的话,那么可能是: - 一个是本地客户端的缓存,chrome这类浏览器自建DNS缓存。 - 一个是本地局域网可能存在的路由器内的缓存。 - 再一个是你查询的ISP的服务器真的是无修改储存TTL的么,还是自己重新对TTL做了处理... 这些得做DNS的童鞋出来说明了... |
59
soulteary OP 多谢广东的某个童鞋,嗯,缓存可以更新机制了,~
|
61
konakona 2015-01-10 20:58:30 +08:00
|
62
Mihuwa 2015-01-10 21:25:31 +08:00
认真看完所有回复,很受益。
|
63
mafuyu 2015-01-10 21:31:08 +08:00
@yylzcom ssl证书应该不算是麻烦吧?麻烦的应该是后续设置,比如说强迫症就有可能对算法有要求、还要设置hpkp啦、证书链,ocsp,crl等等。简直是可以逼死强迫症了...
|
65
soulteary OP |
66
Moker 2015-01-10 22:36:23 +08:00
|
67
willwen 2015-01-10 23:07:54 +08:00 via iPhone
略帶誇張地說,作為國內還算排得上號的前端(現在不是前端了),用博客作為秀淫技基本說明不了什麼,做出點大小輪子還能說點事。
其次,純手寫JS不能說明你技術好,用jq ng avalon vue也不代表渣。 網絡加速對於博客這樣的小應用來說,靜態動態差別實在不大,等做到高並發的富數據頁面渲染,cache才有明顯的意義。 其次,前端渲染還是後端渲染對於博客來說確實有意義,因為數據量小。如果頁面的數據交互複雜,就用MinDB。 不過我是直接用ghost的,默認主題,足夠了,博客重要的是內容分享,而不是秀技術。 |
68
nanshen 2015-01-12 05:57:05 +08:00 via iPhone
讨论的很激烈嘛
|
69
soulteary OP |
71
soulteary OP @Moker 嗯,关于这点有几种不同的解决方式,取决于你喜欢在文章生成html之前还是之后下手,不希望哪些内容被显示出来,截断内容,是否要放第一个代码演示一马= =...或许也能写篇粗浅的分享...
|
72
Moker 2015-01-12 12:20:34 +08:00
@soulteary 写吧写吧。。。
这个是原主题自带的短代码,不支持高亮,有点想换成google-code-prettify 我试过用<!-more->标签去截断,发现不行,还有一种笨方法就是改摘要的字数,代码尽量不放开头,不过感觉你说的应该是在文章输出之后做个判断吧? |
73
aksoft 2015-01-13 14:39:11 +08:00
说实话,挺蛋疼的.用wp还想快,和谁比?抛去静态化,谁都比不了...
|