针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/2/24 15:17 所属群组:
网站管理员 注册会员 技术文档组 等级: 24; EXP: 37
HP: 0 / 584 MP: 241 / 9807 |
针对2.2.x直接读取模板的文件的提速方法
引用:
如果你没有hack过block.php文件和footer.php文件 可以直接用压缩包的文件来代替,最好之前的两个文件都备份 引用:
具体方法2: 如果你对这两个文件做了改动,则直接修改文件 1.block.php (此步可以使得区块直接读取于文件,不过可能模板命名不符合规则,就会出错,如article模块则需要定制,看代码) 引用:
增加下面的代码 引用:
下面三行 引用:
替代为 引用:
2.footer.php(此步骤使得模块模板读取于文件,不过要设置$xoopsOption['template_main']这个变量才读取) 找到下面的代码注释掉 引用:
增加如下代码 引用:
2006/12/14 12:42
|
|||
_________________
nightcat 小站 不同时刻的访问,有不同的惊喜 小站已经改版,欢迎有事没事来踩踩,内容丰富不少,希望你有喜欢的, Gtalk:[email protected] MSN:[email protected] QQ:1043931 |
||||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
Support Team
注册日期:
2005/4/30 13:09 来自 安徽安庆
所属群组:
网站管理员 等级: 20; EXP: 90
HP: 0 / 497 MP: 171 / 8097 |
xoops设计的时候将模板放在数据库里,应该有她的考虑;一个频道页可以有几十个区块组成,设成不同cache提速;但一个内容页(如论坛帖子页)如果cache时间长不利于及时更新,又限制于<{$xoops_contents}>很难进行分拆了,如果能将<{$xoops_contents}>再分拆成小块,分别设成不同时间段cache,既能及时更新,又能提高速度
2006/12/14 13:28
|
|||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
版主
注册日期:
2004/7/13 3:29 所属群组:
注册会员 风格美化组 等级: 28; EXP: 33
HP: 0 / 683 MP: 343 / 12711 |
如果再把xoops_contents 分拆 cache, 那系统的配置也会复杂很多, 在效率、灵活性、可用性上总归要有折中的
2006/12/14 14:45
|
|||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/2/24 15:17 所属群组:
网站管理员 注册会员 技术文档组 等级: 24; EXP: 37
HP: 0 / 584 MP: 241 / 9807 |
利用数据库来保存模板,本身就会降低了运行的速度
读文件方式无论如何都比读取数据库的速度快,如果再加上缓存,也比读数据库的方式要好。 这个优化比较针对开发者,修改内容页模板和区块的模板,不需要更新模块了。这个或者是我偏好,特别不喜欢更新模块。 内容页拆分cache就比较麻烦。
2006/12/14 15:46
|
|||
_________________
nightcat 小站 不同时刻的访问,有不同的惊喜 小站已经改版,欢迎有事没事来踩踩,内容丰富不少,希望你有喜欢的, Gtalk:[email protected] MSN:[email protected] QQ:1043931 |
||||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
Support Team
注册日期:
2005/4/30 13:09 来自 安徽安庆
所属群组:
网站管理员 等级: 20; EXP: 90
HP: 0 / 497 MP: 171 / 8097 |
直接从文件中读模板确实是一种好方法.
我所提到的问题由于最近在内容页进行部分功能拓展.例如我现在要在xoops论坛增加绿野原先论坛里活动报名等功能.因为区块与当前内容页很难作到对应,所以在内容页里用到区块不多,除了登陆的区块,估计就剩下<{$xoops_contents}>.在频道页展示相关内容时我可以用几十个区块设置不同cache保证速度. 而在内容页实际上我有可能只用一个区块加<{$xoops_contents}>,由于每个页面都要查区块,而通常查这些查询消耗都挺大的,再加上对<{$xoops_contents}>为了保证及时性,基本上不做cache或者时间教短,请问大家对newbb是如何设置cache的?
2006/12/14 16:07
|
|||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
资深会员
注册日期:
2005/11/16 20:17 所属群组:
注册会员
帖子:
201
等级: 13; EXP: 21
HP: 0 / 305 MP: 67 / 4479 |
的确是提高速度的一种不错的想法 ,回去我在2.0x下测试一下。。
不过我还是喜欢那种标签调用的方式,感觉方便速度也有保证。
2006/12/14 17:36
|
|||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
版主
注册日期:
2004/7/13 3:29 所属群组:
注册会员 风格美化组 等级: 28; EXP: 33
HP: 0 / 683 MP: 343 / 12711 |
论坛内容是很难cache
2006/12/14 21:52
|
|||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2005/2/24 15:17 所属群组:
网站管理员 注册会员 技术文档组 等级: 24; EXP: 37
HP: 0 / 584 MP: 241 / 9807 |
对newbb帖子做cache的话,我的想法是
1.如果帖子没有更新则调用用缓存的,如果有更新就生成缓存再调用 2.如何保证有更新,最好是增加一个标记字段,如果有更新,就标记为1,生成缓存后就更改0. 3.这里又涉及那些才是更新了?比如,回帖,编辑,删除某贴等时候就标记为1.这时候就需要再次生成缓存了。 在某个意义上来说缓存也相当于生成静态页面了.
2006/12/15 0:26
|
|||
_________________
nightcat 小站 不同时刻的访问,有不同的惊喜 小站已经改版,欢迎有事没事来踩踩,内容丰富不少,希望你有喜欢的, Gtalk:[email protected] MSN:[email protected] QQ:1043931 |
||||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
网站管理员
注册日期:
2004/6/25 19:16 所属群组:
网站管理员 注册会员 Dev+Hack 等级: 54; EXP: 77
HP: 806 / 1344 MP: 1983 / 25188 |
在CBB的viewtopic.php里有直接读取模板文件的处理
不过目前还没有从结构上解决,类似的方案应该算是 "hack",不是"正道" 另一个考虑:数据库查询对速度有一定影响,但查询次数不是唯一的决定因素,有时候甚至可以牺牲查询次数换取performance 所以,在CBB中只有这一处采用了直接读取文件的处理 这是一个很不错的考虑点。SMARTY的应用和block机制是影响XOOPS速度的最大因素,这并不是说SMARTY本身不好,而是我们对SMARTY的应用太教条,需要改进。 我们需要找到解决BLOCK易用性和SMARTY各级缓存的方案,如果有必要,甚至可以抛弃现有的BLOCK机制。
2006/12/15 1:43
|
|||
|
回复: 针对2.2.x直接读取模板的文件的提速方法 |
||||
---|---|---|---|---|
Support Team
注册日期:
2005/4/30 13:09 来自 安徽安庆
所属群组:
网站管理员 等级: 20; EXP: 90
HP: 0 / 497 MP: 171 / 8097 |
感觉block机制确实与内容这块很难很好的结合起来.绿野用的是2.26,论坛也用的是当时自带cbb3.04,打开每个页面必然会进行
SELECT * FROM XXX_group_permission WHERE (gperm_modid = '1' AND gperm_name = 'block_read' AND gperm_groupid = '3') ( 0.005162) SELECT DISTINCT i.instanceid, b.*, i.* FROM XXX_block_instance i, XXX_newblocks b, XXX_block_module_link m WHERE m.block_id=i.instanceid AND i.instanceid IN (xxx,xxx,xxx......) AND i.visible=1 AND i.bid=b.bid AND b.isactive=1 AND ( (m.module_id=0 AND m.pageid=0) OR (m.module_id=mm AND m.pageid IN (0,0)) ) ORDER BY i.weight,i.instanceid ( 0.126147) 虽然查看某个帖子只有一个区块,但是此两个查询是必做的. 下一步,我想先在cbb后台设置里增加程序模仿权限设置,将cbb所有的区块缓存在数组里存放在cache中,newbb跳过block机制,直接在文件里写入block id,通过cache里block数组,调用block相关信息;这样做的风险主要做变更对应blcok时,block id也要对应更新. 关于newbb cache的话,由于现在在论坛上增加了活动功能,不仅要考虑板主,管理员,帖子作者,不同群组权限,还要考虑领队,队员,活动状态等一系列问题,通过字段判断是否cache难度较大.我的做法是引入2.06的群组cache机制,针对讨论区管理员,板主在getCachedTemplateId()时给予对应标志,针对作者,领队,队员,加上uid +对应标志生成对应cache,在修改,删除清除对应cache,但是却无法清除所有对应cache,比如我现在是以作者身份更改帖子保存之后,可以清除对应作者的cache,但却无法清除管理员,游客,一般会员对应的cache,他们要看到效果,需要等到cache时间完成;所以建议加上一套完全的 cache机制,与权限结合起来,从核心延伸至模块,让缓存真正用起来,如果加了缓存机制必然会造成cache文件较多,现在绿野光文章每天可以产生几千cache文件,是否还需要加上模组cache管理,可以只清除对应模组cache,是否加上定时清除cache? 关于<{$xoops_contents}>cache,通过绿野newbb开发cache测试(本机) 可以将原先30多个查询,1秒多的速度,cache成10几个查询0.4秒左右,剩下已经不能精简.现在xoops在SMARTY的应用,似乎仅限于传值,几乎没有定义函数到smarty中,lifetype在smarty中模板应用了很多函数,只是没有时间去研究. 另绿野论坛功能扩展应该算完成了,下周准备放在网上测试,希望大家多多拍砖和帮忙了.
2006/12/15 6:40
|
|||
|