解決WordPress加入CDN后“非插件瀏覽次數統計”瀏覽次數不刷新問題
編輯:狂族晨曦 來源:WordPress技巧 日期:2017-08-25 閱讀: 6,094 次 6 條評論 » 百度已收錄
不知道多少人和先森一樣,在最初接觸wordpress的時候,被網上的各類教程灌輸了“能用代碼版,就不用插件”的概念。先森就本著這個概念,在文章的訪問量的時候,先森就找的代碼版。網上提供的代碼版瀏覽次數統計功能的文章,名稱都差不多,類似“WordPress非插件添加文章瀏覽次數統計功能”這種比比皆是。
先森應該是在wordpress大學看到的教程,關于教程先森就不再贅述了。本文主要解決的是,開啟CDN后,用這種代碼版訪問量統計的方式瀏覽次數不再刷新的問題,如果想結合著來使用的話,統計代碼部分可以去wordpress大學看《WordPress非插件添加文章瀏覽次數統計功能》這篇文章。

瀏覽次數
問題分析
先森其實很早就意識到,開啟CDN后,其實瀏覽量不是不刷新,而是只在首次緩存的時候才會增加一次。
因為只有第一次訪問的時候才會執行php,緩存后就直接訪問的html了,所以就不會增加統計了。所以解決問題的方式,是讓html也能統計到瀏覽次數,先森認知中的方法就只有一個:ajax。然而當初先森雖然知道問題原因,知道解決方式,但奈何先森代碼能力不強,當時沒能解決。
先森始終認為,一個問題如果死活解決不了,那么就先放放,過段時間再反顧可能就會發現,這個問題根本就不是事。當然,這個時間可能就有點久了,起碼就ajax這個問題,先森等了一兩年。。。。
先森想到的用ajax更新瀏覽次數的方法就是,使用ajax提交文章的ID給后方的php,后方的php接收到文章ID后,將該文章的瀏覽次數+1。
效果實現
先森研究了一晚上,發現要解決還是挺簡單的。又是研究幾小時,分享幾分鐘,心塞。
首先,在footer.php中添加ajax的代碼,注意url的地址要改為自己的php路徑:
<?php if (is_singular()) : ?>
<!-- ajax post view -->
<!-- ajax post view -->
<script type= "text/javascript" >
$.ajax({
type:'POST',
url: "//www.cnidcc.cn/wp-content/themes/*/*.php" , /*此處需要修改為自己的php路徑*/
data: {
"postviews_id" : "<?php the_ID();?>"
}
});
</script>
<?php endif ; ?>
接收數據的php代碼很簡單,參考了評論的comments-ajax.php的頭部,禁止直接訪問,然后加上了幾行更新瀏覽量的代碼。將下面內容保存到一個php文件中,放入自己的wordpress主題里面,將該php的訪問鏈接加入到上面的url中:
<?php
//禁止直接訪問本php
if ( 'POST' != $_SERVER['REQUEST_METHOD'] ) {
header('Allow: POST');
header('HTTP/1.1 405 Method Not Allowed');
header('Content-Type: text/plain');
exit;
}
require( dirname(__FILE__) . '/../../../wp-load.php' );
nocache_headers();
$post_ID = $_POST['postviews_id'];
$post_views = (int)get_post_meta($post_ID, 'views', true);
update_post_meta($post_ID, 'views', ($post_views+1));
?>
如此一來,即使加入了CDN,文章頁面變成了靜態頁面,后臺也會更新訪問次數了。
總結
這樣僅僅是解決了文章頁面被緩存后,瀏覽次數無法被統計到的問題,但是還并不完善。
上面的功能實現之后,你會發現,每一次刷新瀏覽次數都會加一,如果有人一直按著F5,那么增加的瀏覽次數就有點恐怖了。這樣還會增加服務器的負擔,像先森這種把網站放在阿里云虛擬主機的,若負載過量還會直接關停,被人這樣搞的關機先森就哭了。
所以,下篇文章先森會分享使用cookies來限制訪問次數無限增加的問題。
另外,除了訪問量持續增加的問題,還有一個地方可以優化。既然ajax能夠異步提交數據,那么能不能動態的修改文章中的瀏覽次數呢?答案是肯定的,先森也會在下一篇文章中更新。
關于上面的問題,請查看下一篇文章:CDN后用Ajax動態提交、顯示文章閱讀量,cookies避免重復刷新
歷史上的今天:
- 2016: CentOS 6.8編譯安裝MySQL(4)
- 2015: 圖解人性漫畫:打工與創業的殘酷區別(0)
轉載請注明出處來自http://www.cnidcc.cn/ajax_views.html

川公網安備 51011202000104號
世間博客不少,風景這邊獨好!
還是老老實實用插件吧,計數插件小。
感謝分享實用信息
支持樓主
有一個問題哦,當訪問的不是緩存內容時,刷新一次,閱讀量會+2
@分享喵: 關于這個問題,我已經在下一篇文章中發布了解決辦法。下一篇的文章鏈接我已經添加在本文末尾,你可以刷新查看。如果還是有CDN緩存的話,你可以點擊評論區上面的“下一篇”查看。