評論模式的小小改變和JS重寫

This is a sitelog of .

因為 PSGI 運行 MT ,貌似服務器執行效率不再是瓶頸, so 漸漸取消了了一些為了節省資源的"優化",簡單記錄如下:

  1. 評論後博文重建的改變
    原來為了效率。我的博文頁其實有兩個。一個是博文本身,另一個是 json 格式的評論全集。 比如這個: /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 直接就有相關設置。。。