[SiteLog]近日网站折腾小记

8月快过去了。时间真的是。。。。
顺便记下这几天对网站的一些小小的折腾吧。

1. 多说评论显示逻辑调整:

还是要从多说说起: 路杨已经基本上实现了把所有的多说评论同步到了本地。 默认同步到多说评论处于未发布状态,防止和多说JS载入的评论形成重复评论。 定时把本地数据库的多说评论转成发布状态,以防止多说服务器抽风导致评论不显示。

但是问题来了: 怎么让同步并本地发布的同一条评论只显示一次呢? 原来的实现办法是在 多说JS 中识别这条评论是否已经本地发布,如果发布则 hook 多说JStemplates.post 函数,让它不生成这条评论
核心代码如下:

codevar DSinMTids = [];
function check_ds_in_mts() {
   DSinMTids = [];
   $("#comments-content div.ds-post-self").each(function()
   { 
     if ( ( $(this).attr("data-source") == 'duoshuo' ))
      { 
       DSinMTids.push($(this).attr("data-post-id"));
      }
  });
}

check_ds_in_mts(); 
var _D_post=DUOSHUO.templates.post; 
DUOSHUO.templates.post=function (e,t){
  var rs=_D_post(e,t);            
  if ( $.inArray(e.post.post_id, DSinMTids) != -1 return '';
  /* sth others*/
  return rs;
}

后来觉得这个逻辑不是很正确, 这样会导致 多说 JS 产生的评论不美观。 于是逻辑关系改成, 在 多说 JS 中识别这条评论是否已经本地发布,如果发布则 hook 多说JS 的 templates.post 函数,让它隐藏本地HTML中的本地发表的同名评论
核心代码如下:

codevar DSinMTobj={};
function check_ds_in_mts() {
  $("#comments-content div.ds-post-self").each(function()
  { 
  if ( ( $(this).attr("data-source") == 'duoshuo' ))
    {
       var ds_id= $(this).attr("data-post-id"); 
        DSinMTobj[ds_id] = $(this).closest(".ds-post");
    }
});
}    

check_ds_in_mts(); 

var _D_post=DUOSHUO.templates.post; 
DUOSHUO.templates.post=function (e,t){
  var rs=_D_post(e,t);            
  var ds_id= e.post.post_id;
  if ( DSinMTobj[ds_id] ) { var el =DSinMTobj[ds_id];el.hide();};
  /* sth others*/
  return rs;
}

这样看起来舒服一些。

接下来,路杨准备逐步把 MT 本地评论也仿照 多说的 JSON 格式进行 JS 化,以减轻服务器压力。 后台程序已经实现,下面就是前端 JS 脚本编写了。
后台脚本地址为: http://mt.easun.org/cgi-bin/mt/cms?__mode=comment_listing&entry_id={entryID}

2. QQ登录插件修正:

改动很小,其实就是做到更正规了。
原来为了节省资源, QQ登录用户的头像我并没有下载到本地,而是为 QQ|头像地址 的方式写进了数据表 url 字段(本意为网站地址)。 然后在现实的时候,识别读取的 url 是否以 QQ| 开始,然后手动赋值给 userpic 。 换句话说, url 代表的含义被彻底转义了并实际上废弃了。。

这次利用 MT5 已经废弃的 hint 字段来存储远程头像地址。 这样在显示的时候不会占用 url 字段。

同时, 换用 external_id 字段来存储QQ服务器返回的 QQ openID。 而不是原来的 name 字段。

这样一来。 用QQ登录的朋友,也可以自由改动在本站点资料了。 地址为:

http://mt.easun.org/cgi-bin/mt/cms?__mode=edit_profile ( 请登录后访问哦。)

*QQ登录插件基本已经没有任何BUG了。 等晚点时间整理出来,共享给同好吧。 *

3. 其他

  1. 暂时取消了 pjax ,为什么取消呢,因为 cache。。 因为 MT 纯HTML, 而 pjaxcache 导致 ajax 取回来的数据在 html后台修改后居然不更新,检测代码。发现 pjax 是检查特定的 header (x-pjax-version)来识别是否重载,而不是检查 If-Modified-Since 。 因为是静态,无法发送自定义 x-pjax-version header, 干脆暂时取消。
  2. 正式启用 UPYUN(又拍云)的 CDN 。 国内的云, 速度的确不一样。暂时只是把 images , js , css 等目录放置在了 UPYUN 。 希望访问速度能有所提升。