说道网站优化,提高网站速度,需要从很多地方出发。
比如wecenter,它的查询太多,查询出来的字段也非常多,这其实是很占效率的。
但是我们没有办法改变它,毕竟作者这么写了,就算你优化完,升级后还是会回复的。
所以我们要做的就是如何减少数据库查询。
那在编程语言里来说,减少数据库查询,那肯定就是用缓存。
但是并不是所有人的服务器或空间都支持内存缓存的,所以我们这里用纯静态化缓存。这也有助于CDN加速。比如如下图:
废话不多说,我们开始教大家如何编写这段代码。
打开 / system/function.app.php
追加方法:
function createHtmlFile($FilePath,$Content){ // 去掉文件名中的一些非法符号 $FilePath = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', $FilePath); $dir_array = explode("/",$FilePath); //split the FilePath $max_index = count($dir_array) ; $i = 0; $path = $_SERVER['DOCUMENT_ROOT']."/"; // 获取网站的根目录,比如/home/username/ while( $i < $max_index ){ $path .= "/".$dir_array[$i]; // 把子目录一级一级加到路径上 $path = str_replace("//","/",$path); // 如果有//则替换成/ if( $dir_array[$i] == "" ){ // 如果这目录值为空则跳过去,这个判断放在循环的最前面可能更合适 $i ++ ; continue; } // 上面的代码似乎可以写得更精练 if( substr_count($path, '&') ) return true; // 如果路径中有&符号,这不好处理,不管了 if( substr_count($path, '?') ) return true; // 有?也不管了 if( !substr_count($path, '.htm') ){ // 如果不包含.htm,原来传了个路径进来 if( !file_exists( $path ) ){ @mkdir( $path, 0777); @chmod( $path, 0777 ); } } $i ++; // 这个搞完,继续 } if( is_dir( $path ) ){ // 如果上面折腾完后,发现是个目录,那就是说要创建index.html $path = $path."/index.html"; } // 如果html页面没创建完整,那还是不管算了 if ( !strstr( strtolower($Content), '</html>' ) ) return; //if sql error ignore... $fp = @fopen( $path , "w+" ); if( $fp ){ // 说明有权限写 @chmod($path, 0666 ) ; // 给文件先赋个权限 @flock($fp ,LOCK_EX ); // 锁定 // write the file。 fwrite( $fp , $Content );// 写静态文件内容 @flock($fp, LOCK_UN); // 解锁 fclose($fp); // 完事 }}
第二步打开:/app/article/main.php
在index_action方法的最后
将
TPL::output('article/index');
修改为:
$content = TPL::output('article/index',false);//这里的/a/ 是指在网站下面生成一个a的文件夹,然后生成静态文件,具体叫啥自己修改createHtmlFile('/a/'.$article_info['id'].'.html',$content);echo $content;