论坛终于来到了1.3 也来到了数据缓存版本
我们目前的程序使用的旧文件缓存,对一些常操作数据的地方进行了文件缓存。
我们都知道一套程序从开始到结束,都是在消耗服务器资源,何况要面对如此多的用户,我们的程序有调试信息,上面有我们的程序跑分,显示程序耗时与内存使用。
但内存使用的显示仅仅是我们程序执行过程中的消耗,并不代表是php编译进程等一系列内核消耗。
所以过程消耗内存远远不止于这点,还有程序运行速度也一样,只是单纯记录程序开始到结束所消耗的时间。
接下来比对一下 DEBUG开启与关闭的运行速度
开启DEBUG 刷新10次左右 均在 0.040 左右
关闭DEBUG 刷新10次左右 均在 0.015 左右
OK ,可见关闭DEBUG 提升速度将是 2 - 3 倍的 !
论坛执行消耗过程
打开DEBUG , SQL查询 (14) , 文件加载统计 (25), New 类 (15)
关闭DEBUG, SQL查询 (6) , 文件加载统计 (23) , New 类 (13)
我们主要是看SQL查询, 可见打开DEBUG后 论坛是不使用缓存的,并且会随着每次访问都会生成新的。
访问首页
开启DEBUG 所使用的SQL
- SELECT * FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0.001ms
- SELECT * FROM "hy_forum" [耗时] 0ms
- SELECT * FROM "hy_usergroup" [耗时] 0.001ms
- SELECT COUNT(*) FROM "hy_post" [耗时] 0ms
- SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms
- SELECT COUNT(*) FROM "hy_user" [耗时] 0ms
- SELECT * FROM "hy_thread" ORDER BY "id" DESC LIMIT 0,10 [耗时] 0.001ms
- SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
- SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
- SELECT * FROM "hy_thread" WHERE "top" = 2 [耗时] 0ms
- SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
- SELECT "user" FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0.001ms
- SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms
关闭DEBUG 所使用SQL
- SELECT * FROM "hy_user" WHERE "id" = '1' LIMIT 1 [耗时] 0ms
- SELECT COUNT(*) FROM "hy_post" [耗时] 0ms
- SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms
- SELECT COUNT(*) FROM "hy_user" [耗时] 0.0156ms
- SELECT COUNT(*) FROM "hy_thread" [耗时] 0ms
可见 关闭DEBUG后的SQL少了非常多, 因为数据都被缓存了。
如果我们没有缓存,那么每个用户访问都要操作SQL,负载是很高的,特别是数据大的网站。
目前数据缓存系统已经支持最基本的 File 与 DB, 并支持第三方扩展内存缓存,
- Apachenote
- Apc
- Eacceleratpr
- Memcache
- Memcached
- Redis
- Shmop
- Wincache
- Xcache
支持Memcached 负载均衡内存服务器
论坛内核提供了缓存函数 , 一键缓存数据, 从而二次开发以及插件开发 使用缓存更加简单方便!