本帖最后由 bbhme 于 2012-4-4 14:21 编辑
css生成机制
以往版本的module.css按注释规则 /** misc::invite,group,forum::viewthread **/来拆分文件,我知道这样设计的目的是把样式按区块/模块,横向重用,抛开性能不说,不过这样分布css,维护代码、二次开发、升级很都麻烦,特别是新增加的功能或去除的功能,开发人员都要一一去核对。
2.5的数据库都按表来分了,能否在生成css文件的时候在原有基础上增加一个按CURMODULE追加的功能?
+module.css 只保留基本区块的css规则 比如 帖子列表、搜索框
++forum_index.css 定义forum.php?mod=index 的布局/修饰
++forum_viewthread.css 定义forum.php?mod=viewthread 的布局/修饰
……
js机制
通过长时间在disucz平台上做二次开发,本人已经能非常灵活的运用discuz的js库,内置的各个函数基本上能满足在功能上的需求。
优点:体积小、内置的用法就是教程,低版本IE表现优秀。
缺点:
- 加载位置在顶部,影响页面渲染速度,原因是在多处页面body中加载过程就要调用common.js的类、函数
- 占用jqury的美元符号 当然要解决这个问题很简单,可以忽略。
- 一些动态效果实现效果不理想
- 渐隐效果,在ie内核表现很卡
- slide效果同上
- 内置slideshow效果简单
- 页面内js分布散。
建议:
1.统一底部加载js
2.将原有需要PHP变量值的地方放在底部,赋值后传入外部js文件。
3.减少http请求,合并js。
我的www.baobao1001.com通过目前使用的是discuz2.0,通过对css和js的处理,在加载jQury和大量jQ的插件情况下,Yslow评分仍然可以做到A-grade,百度测速也做到100分。
主要做法就是将js放在了底部,并且合并了 ,例如http://xx.com/javascript/common.js,jquery.js,orbit.js,masonry.js,infinitescroll.js,viewthread.js 这个是直接生成在memcache或者硬盘里的Gzip文件,免去了服务器请求时的压缩,只有60k(未gzip前200+k)。当然缺点还是很明显的,在SB ie6下,不支持gzip,导致js加载过长。
目前正在升级到2.5,虽然2.0已经非常适合,但是看到2.5的底层的改变后,非常兴奋,所以决定升级,即使是RC版。
2.5后台内置在线升级,不过如果动了默认文件,优势就体现不出来了,还是要手动修改,所以提出了将css文件分离、js按更小的单位部署,最后通过压缩合并。
|