ホームページ  >  記事  >  php教程  >  [原创]关于Yii使用过多widget导致加载速度慢的解决办法

[原创]关于Yii使用过多widget导致加载速度慢的解决办法

WBOY
WBOYオリジナル
2016-06-06 20:09:121269ブラウズ

做Yii的时候发现凡是带有widget的页面加载速度都不是太理想,感觉是每次页面加载前都会判断widget附带的CSS和JS是否完整地复制到assets文件夹中,但有一个页面慢得实在受不了了,扒了一下源码,发现所有的widget加载资源文件时都用了Yii::app()->getAssetMan

做Yii的时候发现凡是带有widget的页面加载速度都不是太理想,感觉是每次页面加载前都会判断widget附带的CSS和JS是否完整地复制到assets文件夹中,但有一个页面慢得实在受不了了,扒了一下源码,发现所有的widget加载资源文件时都用了Yii::app()->getAssetManager()->publish()这个函数,查了一下手册,是这么定义的:
public string publish(string $path, boolean $hashByName=false, integer $level=-1, boolean $forceCopy=false)
最后一个参数:
whether we should copy the asset file or directory even if it is already published before. This parameter is set true mainly during development stage when the original assets are being constantly changed. The consequence is that the performance is degraded, which is not a concern during development, however. This parameter has been available since version 1.1.2.
大体意思就是是否强制刷新资源文件,即使已经加载了。
又看了一下各种widget插件的定义,都把最后一个参数设置成了YII_DEBUG,也就是说当程序是在调试开发模式时,始终是强制加载的,这样解决方案就出来了,把入口文件中的defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);改成defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,false);问题完美解决!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。