提醒:本文最后更新于 2842 天前,文中所描述的信息可能已发生改变,请仔细核实。
目前博客主要采用了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》
php7在数值运算上效率据说提升了40%。。。。chh太壕不太敢去,去了就管不住手
@Xider: 看了chh,就忍不住要剁手,不然从此存款是路人
@Xider: 跟HHVM不分上下,跑WP可能HHVM牛一点,但php 7明显兼容性、可塑性更强!
Super Cache 足矣。我的博客只用了 Apache + HHVM,速度已经足够了。
@Sum: 不折腾是足够了。话说稀客啊
@Sum: 头像呢,伙计
@kn007: 由于 Gmail 被墙,换了另一个邮箱,用来接收通知邮件,同时头像就没有了。
@Sumhat: 再申请一个嘛~
你的博客友链人真多! 呵呵,最近技术类文章很少了。
@郑永: 额,还好。。一发技术文就会被D。。。而且最近特忙。
@kn007: 恩,我几乎都特忙。
@郑永: 大老板肯定忙啦。
我们这些打工仔,也就偶尔忙起来忙得无人道。
做的太重了
@不给力的面条: 还好吧,主要是其他项目也用到,单纯给wordpress是有点牛刀了
沙发哗哗的就木有了
@World: 那是你来晚了
就一memcached就费了我老大功夫了,其他的不敢想,貌似对我博客来说也没必要
@小怪物: 哈, 你也知道我是瞎折腾
@kn007: 我也爱折腾,不过我比你瞎得太多了
装那vps把我搞懒了,因为太麻烦了。。
@小怪物: 你主要是不习惯
IP地址查询不错呀 OAQ
@Meekdai: 还好~
谢谢,在你这找到修复A true SSLContext object is not available 故障的办法:pip install requests==2.5.3,成功解决。
flexget
/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:100: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
@soksolon: 解决就好,周末愉快
对于我的小博客来说,数据库缓存没任何用处,查询量太小,nginx缓存才是王道。
@笛声: 看什么架构吧,像我现在,主要是nginx和memcache来缓存。很多东西精简了。