一開始認為這件事並不複雜,只要修改一下讚按鈕對應的文章網址就好,初步的處理結果也是如此。沒想到過了幾天之後,有客戶表示按讚數一開始雖然有出現,但隨著時間過去,所有的文章陸陸續續又都歸零了。
看來這件事的難度超乎原本想像,因此整理一下這陣子的處理心得。
(圖片出處: pixabay.com)
一、按讚數的原理
1. 以網址為依據
一開始有必要說明一下 FB「讚」、「留言板」等工具運作的原理:
- 這些外掛在儲存資料的時候,必須有一個獨一無二的 ID 用來存取。
- 每篇文章可用來識別、獨一無二的判斷依據,就是網址字串,也是 FB 判別的 ID。
- 網址字串中,HTTP 與 HTTPS 網址字串會被視為不同 ID
- 所以網站升級為 HTTPS 後,FB「讚」、「留言板」等工具會改為讀取文章頁面的 HTTPS 網址
- 原本 HTTP 網址儲存的資料,就會無法顯示
2. 修改外掛讀取的網址
瞭解原理後,處理起來就不難,只要 FB「讚」、「留言板」等工具,不要讀取新的 HTTPS 文章網址時,改為讀取舊的 HTTP 網址,那麼讚數、留言資料就會出現了。
3. HTTPS 網址的問題
然而對於新的文章,「讚」按鈕其實應該讀取 HTTPS 網址。那麼,如果為了舊文章的資料,讓部落格新舊文章的「讚」按鈕一律讀取 HTTP 網址,這樣新文章的讚按鈕,勢必會產生一些問題,例如別人分享我們文章會使用 HTTPS 網址,那麼讚數的累積 FB 會如何判斷呢?
二、依日期處理
1. 轉換 HTTPS 日期
部落格全部文章都讓「讚」按鈕讀取 HTTP 網址不是好的處理方式,最好是:
- 舊文章讀取 HTTP 網址
- 新文章讀取 HTTPS 網址
以部落格轉換 HTTPS 那天為分界點,之前發佈的日期為舊文章,反之為新文章。
2. Blogger 網址參數
然而,用發佈日期當分界點會有一個問題,因為「發佈日期」是可以變更的。有的站長為了讓舊文章曝光,常常會把幾年前的文章改用新的日期發佈,這樣的好處不少,例如:
- 在 FB 或各處分享時看起來像新文章
- Google 搜尋結果的日期比較新,容易被點擊
然而帶來的後果,就是讚按鈕可能被判斷為需要讀取 HTTPS 網址,那麼按讚數就歸零了。
為了解決這個問題,剛好 Blogger 文章網址有「年」、「月」這兩個參數,就算發佈日期變更了,網址仍然不會變,所以該篇文章可以從文章網址的年份、月份參數,來讓讚按鈕判斷要讀取 HTTP、或 HTTPS 參數。
三、FB 除錯 Debug 工具誤事
照理說按前面兩道流程處理後,就可解決升級 HTTPS 後按讚數歸零的問題。但接下來就遇到開頭所述,客戶表示原本舊文章可顯示的按讚數,陸陸續續依舊歸零了。
1. 歸零時間點不一
為何歸零的時間不一,這件事值得探究一下,才能找出真正原因。如果修改讚按鈕讀取的網址後,仍會逐漸歸零,那麼為何不一開始就歸零?
使用 FB 官方提供的「分享偵錯工具」,發現客戶一開始提供的歸零文章網址,在十幾個小時之前有進行抓取。
於是問客人最近是否有分享文章到 FB、或是有請人代操粉絲團、或是做過其他可疑動作,但得到的答案都是沒有。
由於這位客戶的流量很大,而這類網站常常成為爬蟲的目標,一開始曾懷疑是否有爬蟲程式定期、自動使用 FB API 進行類似抓取的動作。
但無論如何,經過觀察分析的結論是,只要使用 FB 官方偵錯工具讀取舊文章 HTTP 網址,原本累積的讚數也會歸零。
2. 本站進行實測
為了證實推論,拿自己的網站做個實驗。本站倒是不擔心讚數歸零,因為去年「WFU BLOG 改版」時,就已經不使用讚按鈕了。
上圖這篇「從小編到總編之路﹍如何成為部落客中的佼佼者」是本站轉換 HTTPS 之前的文章,可看到累積讚數為 492。
使用 FB 偵錯工具後發現,在本站轉換 HTTPS 之後的日期「2 月 21 日」,這篇文章的 HTTP 網址被抓取過,所以的確讚數也被歸零了。
3. FB 自動爬取的時間點
以上面這篇文章為例,現在的時間點為 4 月,上一次 FB 的抓取時間點為 2 月下旬,其實間隔算滿久的,為何我的客戶大部分文章,被 FB 自動抓取的時間點都不到 24 小時呢?
只要 FB 不去爬取 HTTP 網址的文章,那麼該篇文章的按讚數,是可以保留的。
但我的推測是,因為客戶網站的流量很大:
- FB 對大流量的網站,跟 Google 搜尋引擎類似,會比較頻繁的爬取
- 對於分享到 FB 的文章,有人點擊時,FB 就順勢再爬取一次
以上推論沒有官方文件支持,但這可以解釋為何我的客戶舊文章的按讚數,會這麼快歸零的原因。
四、自製讚按鈕
那麼這件事該如何解決呢,是否舊文章的讚數就永不見天日了呢?
當然是可以解決的,不然 WFU BLOG 所有文章的按讚數,在沒有讚按鈕的情況下,是如何出現的呢~~
1. 放棄讚按鈕
由於使用官方讚按鈕後,將無可避免,最終所有文章的讚數都會歸零,那麼也許站長得先做這個心理準備:
- 轉換 HTTPS 之前的舊文章,不要使用讚按鈕
其實會在網站按讚的訪客微乎其微,讚數的累積其實都是經由分享後,在 FB 上按讚的結果。所以網站上我們需要的會是「分享」按鈕,而非讚按鈕。
2. 使用自製讚按鈕 + 分享按鈕
下圖是我幫客戶製作,不能按、沒有功能的讚按鈕(及分享按鈕)示意圖:
其實看起來跟真的也是差不多,分享按鈕是可以按的,這比較重要。
而按讚數用 FB API 就可取得。
3. 搭配日期判斷
最後,再搭配前面提過的日期判斷方式:
- 舊文章使用假的讚按鈕+按讚數+分享按鈕
- 新文章使用真的讚按鈕+分享按鈕
這樣就算大功告成了。
五、補充說明
除非是沒有人要看的文章,FB 不會再去爬取該篇文章,那麼 HTTP 網址的讚數就能永久保留。
為何 FB 重新爬取 HTTP 網址後,讚數會被歸零,以下是我的推測:
再看一次這張圖:
- 取得的網址:是 HTTP 網址
- 標準網址:如紅框處,是 HTTPS 網址
請參考「Blogger 官方免費幫自訂網址升級 HTTPS! 設定處理流程注意事項整理」,建議讀者在後台將「HTTPS 重新導向」設定為「是」。
也因為如此,原本的 HTTP 網址會被 301 轉址到 HTTPS 網址,那麼 FB 爬取 HTTP 網址時,就會把原本的舊文章網址,視為新的 HTTPS 網址。
結果就導致,HTTP 網址被 FB 重新爬取過時,會將 HTTPS 網址的讚數等資料,覆蓋原本的 HTTP 網址資料,導致讚數歸零。
瞭解以上 FB 的運作原理後,提醒一下讀者:
- 將來若分享舊文章到 FB,請別太在乎讚數的累積
- 因為 301 轉址的關係,FB 會把之後的按讚數算在 HTTPS,那麼網站上舊文章 HTTP 的讚數,理論上都無法增加
- 按照本文處理的舊文章,最好抱持著能夠恢復顯示過去的按讚數就好,以免期待有落差。
更多 Facebook 相關文章:
提供一點個人想法:我看到這篇文章,其實是會想對這篇文章按讚的。
回覆刪除但這裡的讚按鈕是針對這個網站,而不是文章,看起來會有一點混淆。個人想法啦 :)
個人認為來這看的人應該都不太會被這數字影響,標題有興趣點開看就對了 :)
回覆刪除您好,開始寫部落格開始從你的網站學習到很多相關資訊,非常謝謝你的分享,目前還是算新手學習中。
回覆刪除有個FB粉絲團按讚的連結問題。不知道為什麼在文章裡崁入的FB粉絲團按讚數,不會直接加到FB粉絲團介面的讚。文章中粉絲團按讚數有增加,而在FB粉絲頁上,按讚數卻沒有增加。
請問是什麼步驟做錯了嗎?? 先謝謝你!!
https://drive.google.com/file/d/1KndJjpg5vtjP8cud8P8k9v8UbzPoa_st/view?usp=drivesdk
非常謝謝你的回覆! 下次會留言注意事項!
回覆刪除