性能优化
数据调用优化
数据层
FarBox有三种类型的数据层,分别为内存层
、核心数据库
、全文搜索数据库
。性能依次递减。
API中调用的数据,基本上从核心数据库
中获取,在对文章进行全文检索的时候,则是从全文搜索数据库
获取索引之后,再查询核心数据库
。
缓存
页面缓存
FarBox会将每个渲染成功的页面,缓存到服务器内存(24小时有效期),进而可以加快响应的速度。
缓存的颗粒度是由URL+网站最后更新时间+浏览器语言(EN/CN .etc)
决定的。
局部缓存
如果在模板中,使用macro
,并且macro定义的函数名需以cache_
开头的,那么就会启用局部缓存。局部缓存的颗粒度由macro函数名+参数+网站最后更新时间+浏览器语言
决定的。
举个例子,比如每个页面中都会出现的一个主导航,它会查询20个分类目录,并且每个目录下平均有50篇文章,那么使用macro将其作为一个函数调用,将会极大地提高页面的响应速度(一般这种情况可以提升10倍左右),同时,也会让模板的条理更加清晰。
超局部缓存
不由得想,如果页面都是从缓存中获取的,那么文章的访问数,这些动态信息不就不灵了?
为了处理这种情况,FarBox的缓存系统中有超局部
的缓存,目前主要应用于访问数
这个变量。
页面渲染时间
每个页面的渲染时间不能超过2.5秒(经过我们的优化,一般页面全新渲染,一般是0.2秒左右;如果是通过页面缓存的,则控制在0.02秒左右完成),否则就会出现超时的错误。
另外,我们还有其它的内部算法会对站点的渲染时间进行测算,如果耗时过长,可容忍的最大渲染时间将会被自动降低。
模板、页面优化
- 不要一个页面中载入过多的资源(比如css/js),否则触发系统流量攻击的自动防御机制,而导致访客比较容易被FarBox屏蔽其访问IP。
- 模板CSS样式中,尽量减少对图片的使用。
- 尽量使用SASS/SCSS/LESS这些结构更加清晰的技术,来替代CSS对样式的控制。