本文最后更新于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”替换之即可。