评论模式的小小改变和JS重写

This is a sitelog of Easun.org.

因为 PSGI 运行 MT ,貌似服务器执行效率不再是瓶颈, so 渐渐取消了了一些为了节省资源的"优化",简单记录如下:

  1. 评论后博文重建的改变
    原来为了效率。我的博文页其实有两个。一个是博文本身,另一个是 json 格式的评论全集。 比如这个: http://easun.org/blog/archives/json/311.json。 当每次有新的评论发表时候,我的原设计是并不刷新本页,只是重载 json 罢了。 通过自写的 JSjson 中的所有评论更新一遍。 而且每个页面的评论也都加入了"刷新" 和"重载"两个按钮。 其中"刷新"的含义是重载 json 文件, "重载"则从数据库重载。 抓图如下:
    旧模式评论
    而现在,考虑再三, 取消了 json 格式的博文页, 减少一次服务器写文件的次数? 同理,改写了 JS,移除了在加载文件同时加载 json 文件。 当然,保留了从数据库直接重载评论的设计。 顺便改了一下 "重载" 的 UI,让它更 醒目 一点 (也许是更*丑陋*了一点。哈哈),抓图如下:
    新模式评论
  1. 针对 未关联 Gravatar 头像的Email用户的头像显示优化。
    不在显示默认头像,而是仿照 手机邮件 APP 的邮件显示,直接显示 Name 的 首字。 其实以前也是这样显示的,只是通过 JS 更新成了 默认头像罢了。 另外,还有其他一些关于 JS 的修改,主要是彻底移除了 duoshuo 的相关代码等等。

  2. 后端修改,主要暴力 Hack 了 MT 的评论逻辑( lib/MT/App/Comments.pm
    在开启不登录评论的情况下,判断是否填写的 Email 是否关联了 Gravatar 头像,如果关联,则直接通过而不审核,否则,进入审核流程。
    核心代码如下:

    codesub eval_comment {   
     ...           
    if ( $blog->publish_unauthd_commenters ) {   
    ### by EasunLee 2017  
    if(  $comment->email     
    && is_valid_email( $comment->email)     
    && is_gravatar_ok( $comment->email)          
    )   
    {$comment->approve;}   
    else { $comment->moderate;}   
    }
    ...    
    } 
    ## is_gravatar_ok( $email)  by Easunlee 2017   
    sub is_gravatar_ok {    
    my ($email) = @_;   
    require Digest::MD5;   
    my $md5 = Digest::MD5::md5_hex(lc($email)) ;   
    my $image_url = "http://cn.gravatar.com/avatar/" . $md5 . '?s=50&d=404' ;   
    my $ua = MT->new_ua( { paranoid =1 } )  or return;  
    my $resp = $ua->get($image_url);  
    return 0 unless $resp->is_success;  
    return 0 if $resp->code eq '404';       
    return 0 unless $resp->content;  
    return 0 unless $resp->header('Content-Type');  
    return 1  ;   
    }   
    ## ---- End is_gravatar_ok   
    

    叹息一下, 貌似 WP 直接就有相关设置。。。