• 原森林之家(foresthouse.cn)改为走私范(zousifan.com),只是改个名内容不变。
  • 网站图片自建立开始到19年全部丢失,血的教训时刻备份,多点备份!

wordpress使用全局静态并开启CDN加速后评论显示不及时

wordpress 8年前 (2015-12-11) 1999次浏览 4个评论 扫描二维码
本文最后更新于2022年5月23日,已超过 1 年没有更新,如果文章内容失效,请 反馈 给我们,谢谢!


当打开一篇博客比如森林之家的时候如果5秒钟还是打不开,就看到一个圈圈在那里转啊转你还会继续等下去吗?要是我的话二话不说直接关掉走人根本不给打开页面的机会并留给我一个特别差的映像,就觉得这个网站不咋地。

那么如何解决呢?如果服务器负载不怎么样的话可以把网站弄成静态的,然后再启动CDN加速,我用的是360的CDN,因为它可以单个网址刷新缓存并且很快是立即刷新的,而且速度还可以。
那么,问题来了。加速以后整个页面都是静态的有些调用的动态资源怎么办呢?这样更新不及时显示不到位总感觉很不好。就比如我的文章页面静态以后启动了360的CDN,当此时有人评论时虽然我能第一时间收到评论通知但是在网站前台根本就看不到评论,必须要等很长的时间。这个时候评论区域就要把它分离出来动态加载了,具体方法如下:

拉取到评论区域的动态接口代码;

<?php
if ('comment_list.php' == basename($_SERVER['SCRIPT_FILENAME']) && !isset($_POST['post_id'])) {
 header("content-type:text/html; charset=utf-8");
 echo '您好!请不要直接访问这个页面!';
 exit();
}
require('../wp-blog-header.php');
header("Content-type: text/html;charset=UTF-8");
header('HTTP/1.1 200 OK');
$comments = get_comments(array(
 'post_id' => $_POST['post_id'],
 'status' => 'approve'
));
echo '<ol class="commentlist">';
wp_list_comments('type=comment&reverse_top_level=true&page=0&callback=mytheme_comment&end-callback=mytheme_end_comment',$comments);
echo '</ol>';
?>
把以上代码保存为“ajax-comments.php”(也可以是任意名字注意调用)上传到网站根目录(也可以是任意目录注意调用)

请求动态评论AJAX代码;

<script type="text/javascript">
/* 将函数放置到ready里面,页面加载后自动执行 */
jQuery(document).ready(function($){
 Ajax_Comments(); 
});
/* Ajax请求,分开写方便调用 */
function Ajax_Comments(){
$.ajax({
 type: "POST",
 url: location.origin+"/ajax-comments.php",
 data:{"post_id":<?php echo $post->ID;?>},
 dataType: "html",
 success: function(out){
 /* 用实时拉取的内容替换原来的内容 */
 $('.commentlist').html($(out).fadeIn(500));
 }
});
}
</script>
将以上代码放在主题目录的“footer.php”文件中(我是放在底部)好了,工作结束!

注意事项

“ajax-comments.php”文件名字或者路径如果更改了“请求动态评论AJAX代码”中的文件名或路径也要做相应更改;“请求动态评论AJAX代码”中的“.commentlist”文件决大多数主题适用,但是部分主题的评论文件可能不同需要更改,比如我的评论文件是“comments.php”则打开这个文件里面会有“<ol class=”commentlist”>”如果没有建议查找“<ol class”找到以后把本文的“commentlist”替换之即可。

版权所有丨如未注明 , 均为原创丨本网站采用 BY-NC-SA 协议进行授权 , 转载请注明 出处!
喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
    仅用来给您发送回复提醒。不会公开!
  • 网址
(4)个小伙伴在吐槽
  1. 为什么不行啊,刷新之后还是没有?求指教。
    丁春华2016-10-03 20:13 回复来自天朝的朋友 谷歌浏览器 Windows 10
    • forest
      大哥你用的是多说社会化评论框……
      forest管理员回复2016-10-05 19:39 回复来自天朝的朋友 谷歌浏览器 Windows 7
      • 是啊,没成功就换回来了,你怎么弄的啊,教教我吧。
        丁春华2016-10-05 20:42 回复来自天朝的朋友 谷歌浏览器 Windows 10
      • 刷新之后,没从数据库中提去到内容,我的是comment-list,已经修改了2处,没成功。
        丁春华2016-10-05 20:47 回复来自天朝的朋友 谷歌浏览器 Windows 10