说说博客架构与缓存流程,另期待PHP 7

提醒:本文最后更新于 2631 天前,文中所描述的信息可能已发生改变,请仔细核实。


各位看官,请喝茶。时间过得真快,已是月底。遂水文一篇。

目前博客主要采用了Varnish+Nginx+PHP+MySQL+Memcache+Redis。

使用这个构架,最主要考虑的是Cache缓存问题,没办法,自从上了Wordpress这条船和走了PHP这条不归路,缓存变得极为重要。

不管怎说,缓存任何时候都很重要啦。特别是对于Wordpress,不缓存,这日子就没法过了。

Nginx的Fastcgi Cache暂时还没好好用到,因为使用了Varnish,就不用多此一举了,不过Fastcgi Cache还是挺好的,不过我用的少,规则写起来没Varnish顺手。

之所以Nginx,不是Apache,也不是A+N,最主要还是Nginx认到底。

Apache作为曾经的最爱,如今已形同陌路,完全不认识了。

Nginx还有个好处就是反代很方便,博客目前反代了Gravatar、Google Favicon。

博客缓存流程是:
用户请求
=>Varnish
=>判断器:
===>1.持久化静态缓存(基本上是很少改动的数据)or >1M的数据长度 => Redis
===>2.伪持久化缓存(请求一次数据库基本不变的数据)or 带缓存时间的缓存(变动少或有变动数据) or <1M的数据长度 => Memcache
=>MySQL Database

任何数据变更都会更新Cache。一般Cache优先选择存储于Memcache,因为php下,还是mc快。

php memcache module我推荐memcached,使用socket模式更佳。

特别是memcached和redis,与igbinary相结合一起,感觉真好。

缓存流程就简单说到这。简单的画个图,有点丑:

对了,我更新了IP地址查询的源码:https://kn007.net/ip.php,更快速便捷的查询,欢迎大家使用。缺点是IP数据库资源是2014年1月的数据。

还有个问题就是,有朋友来问,到底要不要用(require/include)_once?

除了性能和效率上,(require/include)_once不如require/include。肯定选择require/include之外。

在这里再次引用鸟哥的话:你使用(require/include)_once,只能证明,你对自己的代码没信心。

你可以参考鸟哥的文章:《再一次, 不要使用(include/require)_once

最后要说的是,根据PHP 7时间表,PHP 7将在2015年10月发布。

PHP 7基于PHP NG项目(PHP Next-Gen),自从PHP NG开源且合并为PHP 7后,性能就持续增长和改善,它通过Zend加速PHP,使得PHP 7性能有很大提升。

之前尝试过PHP NG,真的很爽!

十分期待今年10月份的正式版,这会给我现在的应用带来更大的性能提升。

更多详情,请查看:https://pages.zend.com/TY-Infographic.html

另记一个Python问题:

InsecurePlatformWarning: A true SSLContext object is not available.

出现了上述错误,只需执行:

pip install requests==2.5.3

即可,目前requests最新版本2.6.0都会这样,原因我不清楚。

最近看到chiphell的土豪们装的机机,一直流口水。。。不过只能想想就好。

转载请注明转自:kn007的个人博客的《说说博客架构与缓存流程,另期待PHP 7