登录 注册

登录

问题 推荐插件:Css和JS合并压缩插件

更多
2009年02月05日 15:38 - 2009年07月04日 10:03 #1 作者: joeguo
根据Yahoo发布的 Best Practices for Speeding Up Your Web Site ,构建高性能的站点中几条最重要的最佳实践:
  • 减少http请求数
  • 添加Cache header
  • GZIP压缩

还有像CDN,将css文件放在顶部,js文件放在底部等等。

其中非常关键的就是上面列的三条。
要减少http请求数,一般就是合并css,js,图片文件,
而Css和JS合并压缩插件可以自动合并css,js文件。
下面是一组数据:
合并前:共有7个js,10个cs,35个http请求,css和js共160K。
http://www.joomlagate.com/smf/index.php?action=dlattach;topic=4728.0;attach=2690;image
http://www.joomlagate.com/smf/index.php?action=dlattach;topic=4728.0;attach=2692;image
合并后:共有1个js,1个css,20个http请求,css和js共160K。
http://www.joomlagate.com/component/option,com_smf/Itemid,31/action,dlattach/topic,4728.0/attach,2693/
http://www.joomlagate.com/component/option,com_smf/Itemid,31/action,dlattach/topic,4728.0/attach,2694/
压缩后:共有1个js,1个css,20个http请求,css和js共35.5K。
http://www.joomlagate.com/component/option,com_smf/Itemid,31/action,dlattach/topic,4728.0/attach,2696/
http://www.joomlagate.com/component/option,com_smf/Itemid,31/action,dlattach/topic,4728.0/attach,2697/

我们发现请求数将近变为原来的一半,css,js文件大小变为原来的20%-25%,对于越多的css文件和js文件,效果越明显。

css,js合并和压缩只压缩一次,以后就直接导入文件。
对于gzip压缩,
1.需要Apache安装了:mod_mime 和 zlib,zlib一般情况下都会安装,而mod_mime不一定会安装。
2.需要在.htaccess文件(<IfModule mod_rewrite.c>的上方)添加

<Files *.js.gz>
  AddEncoding gzip .js
  ForceType application/x-javascript
</Files>

<Files *.css.gz>
  AddEncoding gzip .css
  ForceType text/css
</Files>


最后修改: 2009年07月04日 10:03 由 gw1950.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月09日 17:31 #2 作者: jade
Joe开发的插件真厉害!

不贪加官再封爵位 并未见有所作为 闲人或许总给看低 没与你争辉 处事深不见底

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月09日 19:27 #3 作者: Joomla之门
Joe 有一个 Content Static 静态页面生成插件 就足以傲视群雄了,现在又推出这个 SEO 插件,真是佩服!

感谢 Joe 的超人智慧和付出,我会在下一个集成版中采用你的这两个插件。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月10日 11:30 #4 作者: benneng

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月10日 12:34 #5 作者: jade

不贪加官再封爵位 并未见有所作为 闲人或许总给看低 没与你争辉 处事深不见底

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月10日 13:55 #6 作者: joeguo
过奖了。
开发这些小插件,主要是Joomla建的站点有些慢,并且虚拟主机有诸多资源方面的限制。
记得开发content static之前,我用Joomla建立2-3个站点的时候,Lunarserver就一直说CPU利用太高,给搞到temp的主机上面。等安装了Content static之后,现在有5-6个站点,浏览量也大了很多,不过Lunarserver再也没有抱怨过。

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月10日 16:14 #7 作者: jade
在 hostmonster 放了个J,经常 cpu highload,IXWebHosting没这个问题,IX什么都好,就是速度太慢!

不贪加官再封爵位 并未见有所作为 闲人或许总给看低 没与你争辉 处事深不见底

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月10日 20:02 #8 作者: Pooh
我启用这个插件以后,前台会丢失模板,呈无模板状态。
是不是必须按照:
2.需要在.htaccess文件(<IfModule mod_rewrite.c>的上方)添加

<Files *.js.gz>
  AddEncoding gzip .js
  ForceType application/x-javascript
</Files>

<Files *.css.gz>
  AddEncoding gzip .css
  ForceType text/css
</Files>


进行设置(hostmonster主机),谢谢

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月11日 03:58 #9 作者: ufonba
需要用到.htaccess文件,应该需要服务器开启mod_rewrite吧。

这个 E-mail 受反垃圾邮件程序保护,您需要启用 JavaScript 才能查看。
文件附件:

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月11日 10:45 #10 作者: joeguo
joe137,请问你丢失模板是否启用了GZIP压缩?大家先不要选择GZIP压缩,看看能否正常?
对于GZIP压缩,需要安装mod_mime,mod_rewrite,zlib.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月11日 13:04 #11 作者: Pooh
谢谢。
我开启了GZIP
mod_mime,mod_rewrite,zlib这几项,我检查一下。

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月13日 22:49 #12 作者: jade

<Files *.js.gz>
  AddEncoding gzip .js
  ForceType application/x-javascript
</Files>

<Files *.css.gz>
  AddEncoding gzip .css
  ForceType text/css
</Files>


HM只需要加上面的参数就可以了,另外mod_mime通常老外主机都支持,而且好像也查不到有没有开启(phpinfo),另外,我用Joe的这个插件,把所有js和css全部压缩成gz,只需要两个连接,真是没得说!

另外今天不知道怎样中招了!jos_session出错!www.joomla.cn也是这样的情况!

jtablesession::Store Failed
DB function failed with error number 145
Table './joomlacn/jos_session' is marked as crashed and should be repaired SQL=INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` ) VALUES ( 'ff32b693f0aba521e16988dfc10cc625','1234536385','','0','1','0' )


不贪加官再封爵位 并未见有所作为 闲人或许总给看低 没与你争辉 处事深不见底

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月14日 11:42 - 2009年02月14日 12:16 #13 作者: joeguo
刚刚发布了一个新版本,不需要mod_mime和.htaccess重写功能了,大家试试看。
另外大家可以到:
http://extensions.joomla.org/index.php?option=com_mtree&task=viewlink&link_id=7350&Itemid=2
看看他们国外用户反应的问题,大家有没有碰到,如果碰到,请给出具体情况。
Session crash不知道是不是我的插件造成的?还是Joomla的bug?
可以清除jos_session这个表,然后就正常了。
如果是cssjscompress造成的,怎么会是db的问题呢?毕竟没有做db操作?
最后修改: 2009年02月14日 12:16 由 mmsan.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月14日 15:53 - 2009年02月14日 15:57 #14 作者: jackyking
css compress 里边遇到一个有趣的问题

以这种方式添加的css会丢失...
$doc = &JFactory::getDocument();
$doc->addStyleSheet('modules/mod_mymodule/tmpl/style.css');

而以这种方式添加的css则没有任何问题...
echo JHTML::stylesheet('style.css', 'modules/mod_mymodule/',false);

两者的区别在哪里呢. .

文件附件:

本站维护下列组件汉化
  • Community Builder 1.2RC4 Qcontacts
  • uddeIM 1.6  Custom Properties Alphauserpoints
  • JomComment JComments JFusion
最后修改: 2009年02月14日 15:57 由 nids.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月14日 20:26 #15 作者: joeguo
两者生成的html代码有什么不同吗?请贴出来看看

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月14日 21:07 #16 作者: jade
测试 CssJsCompress1.3.zip 已经支持FF和IE,而且不再需要.htaccess的支持!

/plugins/system/CssJsCompress/js.php?js=*.js.gz
/plugins/system/CssJsCompress/css.php?css=*.css.gz


抓包已经可以发现传输的是 *.js.gz 和 *.css.gz 文件了,只需要两个请求,还想问一问Joe这两个文件是用户访问的时候实时通过服务器生成,还是从Joomla!的/plugins/system/CssJsCompress/目录的缓存里面读取出来再返回给浏览器?

由于这个插件太优秀,忽然想到是不是也可以应用到网站的小图标,例如模块插件和模板里面的小图标,jpg/gif/png,通常精美的模板都带有很多小图标,当然连接数量也会增加,但是相信老外不会把这些小图标都放到一个图片文件里面,再通过CSS方式来调用,如果可以把网站的这些图片都压缩成 *.jpg/gif/png.gz 再传输,不知道效果会是怎样!哈哈!

不贪加官再封爵位 并未见有所作为 闲人或许总给看低 没与你争辉 处事深不见底

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月14日 21:40 - 2009年02月14日 23:37 #17 作者: jade
想问问 System - CssJsCompress 和 System - contentstatic 会不会产生冲突?刚刚点击文件的单元和分类的时候,CSS无法读取,抓包发现请求 /plugins/system/CssJsCompress/css.php?css=*.css.gz HTTP/1.1 500 Internal Server Error,只是在系统的单元和分类会出现这个问题,文章不会,另外/plugins/system/CssJsCompress/目录有大量类似过期的文件,这些文件好像不会自动删除!

再次测试发现:

1.出现HTTP/1.1 500 Internal Server Error可能是与系统的缓存冲突不同步,删除缓存和/plugins/system/CssJsCompress/里面的js和css的gz文件,问题解决!
2.会吃掉模板里面的js,例如在 /templates/ja_purity/html/com_content/article/default.php 里面加了

<script language="Javascript" src="http://域名/script/cb.js">

这样的形式,会吃掉部分代码!
3.和 VOTItaly - Rebuild Joomla! Rating System 发生冲突,开启 System - CssJsCompress 之后,这个插件无效!不开启System - CssJsCompress,这个打分的插件可以正常使用!
http://www.joomitaly.com/votitaly-rebuild-joomla-rating-system/view-category.html


不贪加官再封爵位 并未见有所作为 闲人或许总给看低 没与你争辉 处事深不见底
最后修改: 2009年02月14日 23:37 由 hcyahoo.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月14日 22:18 - 2009年02月14日 22:30 #18 作者: jackyking

两者生成的html代码有什么不同吗?请贴出来看看


这两个输出时一样的,这才是困惑的地方...特意看了一下JHTML::stylesheet的处理过程结果发现
function stylesheet($filename, $path = 'media/system/css/', $attribs = array())
	{
		if(strpos($path, 'http') !== 0) {
			$path =  JURI::root(true).'/'.$path;
		};
 
		$document = &JFactory::getDocument();
		$document->addStylesheet( $path.$filename, 'text/css', null, $attribs );
return;}

基本上可以认为两者没有本质差别?但是实际使用中的确第一种方式的输出的确丢失了css...

唔...想了一下可能是由于两种方式输出分别为相对和绝对地址造成的

文件附件:

本站维护下列组件汉化
  • Community Builder 1.2RC4 Qcontacts
  • uddeIM 1.6  Custom Properties Alphauserpoints
  • JomComment JComments JFusion

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月15日 00:30 - 2009年02月15日 00:34 #19 作者: carsonng2000
您的外挂真棒, 确实快了很多!
但开着你的外挂后,站上不少三方插件好像运作不到javascript...
然后, 我取消勾选你的外挂那个js 优化的选项后, 又回复正常了...

请问joe 这到底是不是我的设置有问题呢?
谢谢您...
最后修改: 2009年02月15日 00:34 由 hpcgrid.

登录 或者   注册一个会员帐号 来参与讨论

更多
2009年02月15日 10:40 #20 作者: joeguo
不知道js中有没有jquery,现在知道合并后mootools和jquery会冲突

登录 或者   注册一个会员帐号 来参与讨论