2011-09-16 updated:
增加缓存控制,在首次访问时生成缓存并保存在数据库中,不用每次访问都要查询M遍数据库并经过N次for循环最终生成归档。
效率和速度对比:
之前的版本:
可看到内存使用峰值为38.25 MiB,SQL查询次数为1463次,PHP执行耗时2.560秒。
优化后的版本:
可看到内存使用峰值为28.29 MiB,SQL查询次数为83次,PHP执行耗时0.404秒。
二者的数据一对比你就知道啦 ![]()
PS:目前这个页面模板是我用过的greenthewebnews主题的,如用在你当前的主题不好看,你只需对比你的主题的page.php文件做少量修改即可。
hacklog-clean-archives.php 下载 (7.3 KB, 258 次)
以下内容于 2010年07月10日 发布:
话说那天在此童鞋的博客留言本上看到有人问及他的“网站地图”功能是怎么实现D,偶看到此童鞋笑而不答。这引起了偶的注意,淫荡地笑了下,发现问题啦(底部的JS代码露出了马脚(
http://wange.im/sitemap
其实万童鞋这个网站地图 并不是地图啦,只是一个文章存档而已。今天我也弄了个差不多的东东,我就老实多啦,取名”存档“。呵呵。大家喜欢的把代码拿去吧。
看下我这里的效果:http://www.ihacklog.com/sitearchives
如果你的博客没有加载JQuery 库,请自行添加代码搞定。(这个不用说了吧?)
说明:
此代码部分参考了Viper007Bond童鞋的插件Clean Archives Reloade 。不过我这个应该运行时效率稍高一些,主要是对其GetPosts()这个函数做了相应的修改。在此感谢Viper007Bond童鞋一下。
此方法与插件法相比的优点:
1,纯绿色,不写入任何东东到数据库
2,按需调用。无需全站加载,只在访问存档页时调用。
3,与插件一样,可配置。(配置方法见下面)
使用方法,将hacklog-clean-archives.php上传至当前主题目录下面,然后在后台新建一页面,名字随意,模板选择 hacklog-clean-archives ,内容可写可不写。
页面内容如果要写,则必须按以下格式,因为这里页面内容实际上是用来控制这个存档的显示的。
1 2 3 4 5 | usejs=1; monthorder=old; postorder=old; postcount=1; commentcount=1; |
解释下,这里usejs表示使用JQ折叠显示 ,这个Javascript存档折叠显示效果相当酷的。
为1开启,设为0关闭。
monthorder (存档月份排序) :
new 【按时间倒叙排列月份(离现在最近的月份排最前)】
old 【按时间正序排列月份(离现在最远的月份排最前)】
postorder (存档文章排序):
new 【将最新的日志显示在第一位】
old 【将最旧的日志显示在第一位】
postcount:是否显示每月的文章数
0 :不显示
1 :显示
commentcount :是否显示文章评论数
0 :不显示
1 :显示
喜欢这篇文章吗?
请订阅本站 RSS feed 或





回复 (45)