类别:Develop / 日期:2020-05-07 / 浏览:697 / 评论:5

最近在捣鼓站点前端框架的优化,发现博客的图片TTFB竟然高达1秒,而且还是40x40的缩略图.. 多番搜寻之后发现竟然是缩略图插件导致的,这就尴尬了,主要是我用的小鸡带宽很小,关闭缩略图的话,只能提供三四个人同时访问,因此只能想办法来解决这个问题。

解决Z-blog缩略图插件TTFB问题 zblog ttfb php 伪静态 缩略图 第1张

期间咨询了一个插件开发者,在咨询问题的同时,突然灵光一闪,会不会是我伪静态规则导致的?果然给到我的答案就是,确实是插件伪静态的问题... 这就让我很尴尬了,如果按照插件作者讲的伪静态规则排序的话,我的网站直接500,按照我的规则排序的话,伪静态虽然能生成,但是与程序无法配合处理? 开发者告诉我说是服务器问题,可是我真的是找不出什么问题,如果一定是有问题的话,那就是zblog程序本身伪静态的问题,兼容性太差! 闲话少说,先说说解决思路吧。

有两种解决方式,一种是修改插件看看他是怎么解析的,一种是在模板加入判断处理。当然是选择后者了,前两天改那个评论插件让我现在都感到后怕!这里我们先看下原本的模板代码

    {php}
    $order = array('log_ViewNums'=>'DESC');
    $where = array(array('=','log_Status','0'));
    $array = $zbp->GetArticleList(array('*'),$where,$order,array(6),'');
    {/php}
    {foreach $array as $hotlist}
    {php}
    $pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png|\.bmp]))[\'|\"].*?[\/]?>/";
    $content = $hotlist->Content;
    preg_match_all($pattern,$content,$matchContent);
    if(isset($matchContent[1][0]))
    $src=IMGS::getPicUrlBy($matchContent[1][0],40,40,$type); //调用插件修改图片
    else
    $src="/theme/{$theme}/style/images/pic.png";
    {/php}
    {/foreach}

我们需要在IMGS插件处理图片之前加入IF判定,这里的加入方法有两种,一种是放在前面判断,如果没有发现缩略图,则调用插件修改图片,这种需要你能够解析计算出路径,主要是他的加密处理,跑起来也不见得会有多快。因此我选择了第二种,在后面加入判断,如下

该部分内容已隐藏,评论后 刷新页面 可见。

 可能感兴趣的文章

伤心叹戈

评论区

共有 5 条评论

user 访客 / 2020-07-22 09:02:11 / Windows 7 / Google Chrome 78.0.3904.108 / 回复

学习一下

user 访客 / 2020-05-29 16:10:16 / Windows 10 x64 / QQBrowser 10.5.3863.400 / 回复

优秀来学习

user 访客 / 2020-05-28 22:50:16 / Huawei ELE / Google Chrome 76.0.3809.89 / 回复

学习一下,回复可见

user 访客 / 2020-05-13 10:02:52 / Windows 10 x64 / Google Chrome 81.0.4044.138 / 回复

学习一下

user 访客 / 2020-05-13 00:13:33 / Android 8.0.0 / Opera 4.0 / 回复

学习一下

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。