给代码加入了toml支持

足足忙了半年,代码也没怎么更新过,每天靠游戏强行提神,最近终于空点有精力调整代码了。

首先做的是调整了配置文件格式。

从配置文件来说.TOML比JSON好的太多了。

唯一的问题是golang的两个toml库

https://github.com/pelletier/go-toml

https://github.com/BurntSushi/toml

都有各自的问题。

后者已经停止更新很久了。

前者的话,功能十分强大。但是无法有类似json.RawMessage般可以二次解析的库,也没不能解析结构中的interface.把代码hack一下可以使用。但看了下完整的代码中用的都是比较死,想要完全调整还是有点复杂的。

发布于
2018-08-01

修正一堆BUG

果然相对于写代码,我更擅长的是写bug...

发布于
2018-04-08

加入留言系统

网站重构

加入第三方登录和留言系统

发布于
2018-01-29

进一步优化缓存组建

脑子里还是满脑子的程序优化。

回家可能是吃饱了,灵感一动,想到了新的提升页面效率的方法。

Golang的话,本身常驻内存,不和php似的要把缓存都放在进程外,也不向nodejs是那样对多核支持不佳。

程序内存就是效率最高的缓存了。

提高效率可以先从降低redis的使用率开始。

用redis而不是内存缓存其实最主要还是为了能够分布式,或者说是冗余。

那么其实redis只要负责缓存的状态就行了,实际较大的内容,比如页面,还是缓存在本地就好了

redis里放个内容的更新状态(摘要或者甚至是时间戳都行)

赶紧着手,就着我的redis缓存和cachegroup缓存改了一个hash缓存驱动出来。

测试跑通,感觉上手。

的确有一定的提升。

从10k左右到了13k不到。

效果还算暂时能让我满意。

发现目前影响缓存效率最主要的还是内容大小。

也就是,以profile来说,目前最大的大头是 分配内存以及传递数据了。

再下去怎么优化,暂时有点失去方向了。

发布于
2017-12-16

优化完成,发现自己自High起来越发不要脸了

终于把blog代码走redis缓存在本机提升到10k rps以上了。

手法相当无耻。

在各种分析代码后,发现cpu主要耗费在redis连接和反序列化这两个和内容长度直接相关的部分后。

直接写了个简单的gzip中间件挂在了缓存后面,缓存压缩过的数据。

一下子就ok了。


顺便,在把模板系统也折腾过一遍以后,结论:

  1. 模板系统也和输出的内容多少直接相关。
  2. blog这种长度主要在数据的,还是直接缓存页面比缓存数据+渲染快很多。
  3. Golang的template模块是真心慢。Jet html相对好不少,但还是很难让人满意。同样的首页用本地内存缓存过的数据渲染的话,大概也只有5k-6k rps。走redis就真心没法看了,2k rps出头。
  4. 在c10k这个层面,走redis的成本其实也是很高的。
发布于
2017-12-14