前略,天国的美工。
我知道么个死熬胶+完美癌曾经直言不讳的吐槽咱的Blog界面好丑,但是没关系,咱的口味就是如此=_,=
其实我本来是不想折腾SylphGear的代码的,可是人一旦有点儿想法,心里开始痒起来,加上最近划水率占比很高,于是还是动手了。
主要改动了两个方面,文章摘要的Cover封面预览,然后就是系统的数据库查询优化。
大家都知道的嘛,只要打开鹚酱的Blog,鹚酱就会在首页和文章列表页喂大家吃水果/w\
可是当初为了省事儿,用了一行代码采用完全随机的方式返回一张水果图片,注意是完全随机不是真随机啦,作为PC,不花点力气哪来的真随机嘛。
不过暂且叫真随机吧,可是正因为是真随机,所以刷动页面的时候还是有很大概率,在六张水果图片里面,出现两张一样的水果图片的啦!
老是吃一样的果子也会厌的嘛,于是开始寻思着去优化他,最终决定:
1 使用一个随机种子,然后迭代一组图片出来,保证不会吃到一样的水果!
2 给文章添加Cover Meta,优先展示Cover Meta,如果没有 Meta 就依旧喂水果(这下总有点新鲜口味了吧)
优化完成后,具体效果见首页最新的那篇文章啦。
嗯,其实这就是个典型的“伪随机的上位和真随机的逆袭”的故事/w\
然后关于数据库方面的优化有两点:
1 咱终于给所有的表都加上索引了。
2 大半年过去,各种库又更新了,作为程序员你懂滴。
其实我想说,大部分程序员对于数据库,都没有索引这个概念吧,毕竟很多时候写的东西,量级非常小,加和不加索引区别不是特别明显。
但是呢,当你的数据量在2~10亿级别以上后,索引加不加速度可是天壤之别的说!
鹚酱也是如此,当初写SylphGear的时候根本不关心数据库的具体优化,毕竟文章也就那几篇,评论也就几百条,复杂的聚合查询也就两个,负载非常低,
然后服务器又是SSD的,说实话这个量级下 N^2 和 lgN 确实肉眼难辨。
但是作为一个合格的程序员,吾还是把代码快速梳理一遍后,把查询语句挑出来,建了几个聚合索引,OK!
真到亡羊补牢的时候,就为时已晚嘛!
然后呢,今天上午改动SylphGear的代码的时候,一开始就把咱給瞢了,SylphGear的代码大半年没改一行,忽然就启动不能了!
顺着异常面向stackoverflow编程,哦,原来是异步版的mongo驱动又更新了啊,这个那个的……
于是马上dirty hack了几行代码,既加上了对新版驱动的支持,又做了对旧版驱动的兼容,今天也是很平静的一天呢,晴空万里~
入行计算机这么多年,我发现,程序员的代码中起码有30%的业务逻辑,都是在做兼容hack吧(ry
于是,先就这样好了ლ(╹◡╹ლ)