很不错啊
~ $ curl -I http://tiny4cocoa.com/thread/show/2396/
HTTP/1.1 200 OK
Server: Apache/2.2.14 (Ubuntu)
X-Powered-By: PHP/5.3.2-1ubuntu4.22
Set-Cookie: PHPSESSID=43dfb51547371613b0e0c773ca046d77; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: s-maxage=600
Pragma:
Vary: Accept-Encoding
Content-Type: text/html
X-Cacheable: YES
Date: Thu, 23 Jan 2014 08:54:38 GMT
X-Varnish: 1944712390 1944712275
Age: 39
Via: 1.1 varnish
Connection: keep-alive
X-Cache: HIT
其实 Varnish 更多是作为页面缓存用比较好。
页面缓存更适用于 blog / 杂志 / 新闻 / ecommerce 类比较不常变化的,论坛这种比较经常变化的有点难办。也并不是特别难办,或许想想法子绕一下。
其实页面提速没有什么秘诀,个人认为就是能够不动态刷(就是查 SQL)的地方都预先缓存好,目的是减少页面上需要的 SQL 句。尤其是比较 Expensive 的查询。譬如你首页的那些新闻/最新帖子,都可以缓存起来,不必要去每次查数据库,虽然并不昂贵。
Twitter 的经验就是大量缓存。
能够页面缓存的就页面缓存,需要动态的用 Memcached/Redis 这类的缓存。
另,Nginx 比 Apache 并发要做得更好。可以找 benchmark。
fetch 本楼用了600ms。
抓了包分析了一下,主要损耗是在 sydney 离 us 太遥远了。600ms 听上去好像很多,但是从tcp syn 到 push用了180ms, body 的传输真正用了 5ms 左右,浏览器早开始渲染了。
所以,即使上了 gzip 也没什么帮助。再提速要上 CDN。
不过从 180ms 开始渲染,其实已经很好了,几乎感觉不到。我这里访问主要 syd 的网站也是需要 200ms 左右开始才有 push。
如果不上 cdn,还是加个 gzip。 对于传输 js/css 还是有帮助的把。
即使页面上 cdn,resource(js/css/img) 也是可以放上去。