首先要改进的是判断缩略图是否已经存在,如果存在就不再执行生成缩略图操作。具体函数过程文件/e/class/t_functions.php 函数命名sys_ResizeImg
原始判断缩略图是否生成过存在的方法为PHP的file_exists函数,此函数相比专门的文件判断存在is_file函数在效率上要慢很多。
查找:
替换成:
- if(empty($target_filename)&&file_exists($newname.$filetype))
其次是有的小伙伴GD.PHP函数库换过非官方的处理方法,可能面临着PNG图片缩略图生成后为JPG格式,那么上面的那句代码就无法判断这个缩略图已经生成存在了,所以每次更新页面都会重复生成,效率会非常低。那么我们就要把上面那种改法就不适用了,我们这里采用多次判断方法来判断是否真的存在,进而减少PNG重复生成缩略图的问题。
- if(empty($target_filename)&&is_file($newname.$filetype))
查找:
替换成:
- if(empty($target_filename)&&file_exists($newname.$filetype))
- {
- return $newurl.$newfilename.$filetype;
- }
至此,sys_ResizeImg自动生成缩略图函数效率慢的问题能解决80%吧!
- if(empty($target_filename)&&is_file($newname.'.jpg'))
- {
- return $newurl.$newfilename.'.jpg';
- }
- if(empty($target_filename)&&is_file($newname.'.png'))
- {
- return $newurl.$newfilename.'.png';
- }
- if(empty($target_filename)&&is_file($newname.'.gif'))
- {
- return $newurl.$newfilename.'.gif';
- }