经历一个月,终于敲完自己个人博客网站的代码了,收获挺大。这篇博文讲讲在博文归档设计方面的收获。在进行表设计的时候,自己将博文的添加时间设计为时间戳存储,这样的话在存储的时候,写入速度会快一些。在首页进行归档的时候就需要用到mysql中的FROM_UNIXTIME(unix_timestamp,format)函数,通过这个函数对数据库中的记录进行分组,然后计数,就可以得到在某段时间内所发表的的博文总数。sql语句如下:
select FROM_UNIXTIME(`blog_create_time`,'%Y-%m') as Archive,count(*) as total from xw_blog group by Archive
----------
使用smarty模板引擎在首页显示的结果如下:
在点这个链接的时候,只要把这个时间段通过get方式传过去,然后在sql语句中同样用From_unixtime转换时间戳就行。
做到这里,这个文章归档功能算是做完了,不过这种处理模式应该效率比较低,如果博文比较多的话,会很慢,同时读出来的部分数据基本上不会改变,如果重复去读比较浪费服务器资源。这时候可以用TP框架中的S函数进行数据的缓存,如果真的访问量那么多的话,可以考虑使用一下高大上的memcache和redis。
另外,在数据库设计字段的时候,也可以为实现这个归档功能独立设计一个字段,这个字段就存储博文发表的月份字符串,这样在读取的时候就不用这个From_unixtime()函数了。以空间换时间,虽然这有点违反数据表设计的“三范式”要求。