首页站内杂志技术文摘
文章内容页

对帝国CMS生成缩略图函数sys_ResizeImg效率慢的研究和改进

  • 作者:
  • 来源:
  • 发表于2021-07-18 17:02:09
  • 被阅读0
  • 小伙伴们再帝国CMS模板开发中会面对不同位置调用不同尺寸缩略图的问题,这个时候我们一般会用帝国CMS的sys_ResizeImg自动生成缩略图函数。但是如果站内存在大量需要处理的缩略图的时候,我们会发现是非常慢的,于是墨鱼对此缩略图进行了一些分析研究和改进。

    首先要改进的是判断缩略图是否已经存在,如果存在就不再执行生成缩略图操作。具体函数过程文件/e/class/t_functions.php   函数命名sys_ResizeImg

    原始判断缩略图是否生成过存在的方法为PHP的file_exists函数,此函数相比专门的文件判断存在is_file函数在效率上要慢很多。

    查找:

     
      1. if(empty($target_filename)&&file_exists($newname.$filetype)) 

    替换成:

     
      1. if(empty($target_filename)&&is_file($newname.$filetype)) 

    其次是有的小伙伴GD.PHP函数库换过非官方的处理方法,可能面临着PNG图片缩略图生成后为JPG格式,那么上面的那句代码就无法判断这个缩略图已经生成存在了,所以每次更新页面都会重复生成,效率会非常低。那么我们就要把上面那种改法就不适用了,我们这里采用多次判断方法来判断是否真的存在,进而减少PNG重复生成缩略图的问题。

    查找:

     
      1. if(empty($target_filename)&&file_exists($newname.$filetype)) 
      2. return $newurl.$newfilename.$filetype; 

    替换成:

     
      1. if(empty($target_filename)&&is_file($newname.'.jpg')) 
      2. return $newurl.$newfilename.'.jpg'
      3. if(empty($target_filename)&&is_file($newname.'.png')) 
      4. return $newurl.$newfilename.'.png'
      5. if(empty($target_filename)&&is_file($newname.'.gif')) 
      6. return $newurl.$newfilename.'.gif'

     至此,sys_ResizeImg自动生成缩略图函数效率慢的问题能解决80%吧!

    【审核人:站长】

        标题:对帝国CMS生成缩略图函数sys_ResizeImg效率慢的研究和改进

        本文链接:https://www.meiweny.cn/zazhi/zhongwangjiaocheng/19.html

        赞一下

        深度阅读

        • 您也可以注册成为美文苑的作者,发表您的原创作品、分享您的心情!

        阅读记录

          关注美文苑