距離此博客站點搭建已經一年啦!那就剛好借此機會回顧一下,一年之後,自己對於博客搭建的個人想法,剛好也對博客的部署做了一點小小的調整,可以跟大家分享下哈哈哈
回顧#
回看去年寫的這篇文章,還是挺有感觸的:
...
Blog 能為我們帶來什麼#
- 個人品牌: 這一點在技術層面最為顯著,大部分的技術大佬都擁有自己的 Blog 站點,內部記錄和分享了很多高質量的分析和思考的結論,順著博客列表翻一遍基本都能收穫頗豐
- 低門檻編寫成本: 這裡主要想的是對於自己編寫內容質量的門檻,在現有的大部分社交平台上分享各類文章,往往需要對內容進行反復修改多次加工,往往很多想分享的內容經過這種隱形成本一擋,都感覺不值得寫了,這些零星冒出來的火花可能就此熄滅了,有點可惜
- 自由度
- 產品實踐: 相信大家不止一次的對於某些平台的閱讀體驗提過優化建議,這裡配色不行,那裡廣告礙眼,這裡生態封閉,那裡審核嚴格,blog 提供了一個相對自由的畫板,能夠實現自己的一些想法。對於產品來說,個人 Blog 就是一個小小的產品,它可以包括你對於這種形態的內容載體的所有思考,麻雀雖小,五臟俱全
- 技術實現: 對於程序員來說,自建站是一個最好的技術實踐入口。如果你想,Blog 內部幾乎包含了所有可以嘗試的技術場景和技術棧,是一個非常好的練兵場
...
過了一年,對於上面的幾點我有幾點有了一些新的思考,比如 個人品牌 和 編寫門檻 這兩個:
個人品牌#
這個點我今年在看到一篇飛書文檔的時候,意識到了,這個對於結識新朋友可太有用了
💡 陶晨毅的個人說明書 這篇飛書文檔非常詳細介紹了她自己的的個人信息,感覺通過文檔就能夠快速了解一個朋友,還挺不錯的,就是這個版本好像刪掉了很多關於自己的介紹,可能是想認識她的人太多了吧 2333
其實很多時候,你做自我介紹的時候,對於不同的朋友,他們對於這些信息的接受程度是很不一樣的。 很可能你在自我介紹的時候,感興趣的朋友,感覺你說的太少了,有點意猶未盡,但是又不知道怎麼樣獲取到和你感興趣的點,這個時候就十分尷尬了,甚至新朋友會認為你是個比較內向,沒有什麼愛好的人,那就可能導致錯過了結識一個興趣相投朋友的機會
相反也是一個道理,如果新朋友對於了解你不是很感興趣,你巴啦巴啦說了一堆,大概率對方也 get 不到,只能是 —— 再說就不禮貌了。然後還很容易導致你認為自己的介紹毫無意思,影響你認識後面的新朋友,也很尷尬哈哈哈
通過博客或者文章認識一個人,其實是一種慢節奏的異步社交方式。現在這個社會中,大家都有自己處理信息的節奏和方式,所以當你自我介紹的時候掏出自己的博客,那將是絕殺 hhh(我的見 about 頁面見 此鏈接)
所以今年我在認識新朋友的時候也嘗試了一下這個方式,發現還是挺不錯的 hhh
低門檻的寫作成本#
這個真的會有影響,一個是寫作的阻力,一個是發表的壓力
阻力這個感覺目前還是處在一個靜待時機的階段,沒有比較好的方法去克服 hhh,還得學習一下
但是寫博客相對來說,在發表壓力上,就明顯降低了很多。就比如說,我的這篇 新冠記錄,要是我放到一般的渠道上,總感覺不太合適,但是我自己的博客,就不一樣了,比較隨意。就比如說,自己寫博客,別人看是類似別人來我家,我會比較放鬆;如果去平台上寫文章,類似於我去別人家,會比較拘謹哈哈哈
但是這篇文章會是我多年之後回頭想看到的內容,而且它肯定也能給對此感興趣的朋友一些幫助,如果不是自己有個博客,可能就又遺失了自己生活中值得回味的片段,有點可惜了就
感悟#
給自己多買幾個裝東西的籃子#
有個理論叫:手上拿著錘子,看啥都是釘子
但是我寫博客一年的感悟來說,這個理論一些情況下可能還有後半句:但是大部分情況下,你要是沒有錘子,你連釘子都看不見
人腦其實用的是一個很節能的算法,在面對你不需要了解的東西時,大腦直接會把信息放到優先級隊列的最末端,如果你沒精力處理,那就會直接丟棄。但是這個時候要是你手上拿了錘子,那優先級就高了,說不定你就能注意到了。比如很經典的 孕婦效應(你越關注什麼,就會越出現什麼)
寫博客的一年来,我發現了很多優秀的博客站點,在之前的訪問情況下,我可能是通過查技術問題進去,看完問題就出來了。但是隨著我對於自己博客的思考越多,對於他人博客的信息量獲取的也就越多
比如,我會慢慢關注起這類博客的各種細節,開始從設計角度欣賞整個站點的佈局,UI 設計的是否先進、清晰和美觀,可點擊內容和鏈接的設計是否冗餘,關於頁面中有沒有能夠聯繫到博主的方式;整個站點的加載情況和展示情況如何,對應的技術棧是什麼;站點的訪問流量怎麼樣,里每一篇文章的訪問量是多少等等去看這個站點...
如 diygod 大佬開源的 xlog,見 https://diygod.cc
同樣在工作中,由於我在折騰博客的時候,會考慮用什麼樣的技術去低成本的實現我的需求,我會開始慢慢關注工作中的一些 Operation 的技術,比如 Nginx 配置
Docker 部署、DNS 解析和 CDN 加速等,從以前的能用就行的標準,慢慢到了看怎麼優化的程度
所以,我就把這個理念擴展成了裝東西的籃子理論(瞎編亂造 hhh):我們在生活中,出門的時候要多那幾個裝東西的籃子,像錘子這樣的有用的工具,能裝就多裝點,多發現一些生活中的釘子
我學 hhh
基礎設施省錢的必要性#
最開始想的是,博客用用免費的部署平台就好了,所以其他的性能優化措施也沒考慮過,但最近在使用場景變多之後,發現要做優化的話,真的處處要錢 hhh:OSS 要錢,CDN 要錢,雲伺服器要錢,帶寬要錢。以前雖然幹活也要申請預算,但是這個預算實打實花在自己的錢包上的時候,體驗那還是不一樣的哈哈哈
還記得在字節搬磚的時候,開發抖音視頻流中彈出的那個優惠券樣式,有同事 review 代碼的時候提出讓我把裡面分割線用的 PNG 換成 SVG
年少輕狂的我雖然當時改了,但是心裡想的其實是,這優惠券背景上的線,用 PNG 不就是幾 kb 嗎,還專門改成一大坨 svg,體積上小一點,感覺也沒必要吧,就算所有用戶都看一遍也要不了多少流量。但是後面發現其實這是一種思想,以小見大,如果體積相差大一些,用戶數乘以現在的 八億,這個流量上的使用耗費就是個天文數字,可以避免的話,為什麼不改呢哈哈哈
架構調整#
有收穫當然有會付出,比如踩的一些坑 👀
雖然在調研之前坐的工作已經做得很全了,但是在長期的使用過程中,依然有一些問題,比如:
- CD 部署到 Fly.io 的過程太耗時
- 很多好用的功能還沒有擴展
- 資源過多的話,訪問速度明顯下降
為了解決上述問題,對之前的簡易架構做了一些調整,下面逐條說一說 👀
省流的話就是:還是要折騰,還是要懂技術,還是要 debug,還是要維護🤣
部署邏輯優化#
原來的部署邏輯是 Astro + Github CD + Fly.io
Blog 本身的技術棧沒有變化,Astro 的更新維護很頻繁,並且社區也很活躍,唯一一點要吐槽的就是 Astro 更新太快,外加一些簡單的通用組件生態還是比較缺乏,比如 圖片預覽,markdown 自動生成菜單等等,還得自己開發👀
首先遇到的問題就是 Github 部署的時間特別長,仔細一看問題在於 Fly.io ,執行的部署流程時間太長
Fly.io 的 remote runner 性能比較差,在遇到 Astro 插件跑圖片壓縮的時候,就非常慢,包括最後還需要把整個文件夾打包成 docker 鏡像發給遠端,再通過 server 跑起來,整個過程中其實沒必要這麼繞,想了下當時也是為了用上 Fly.io 的國內訪問特性,才這麼設計的 hhh
但是呢,好在前一陣子我把域名備案了,所以可以用國內的 OSS 服務了,突然發現其實直接 build 完,丟 OSS 上就可以了,完全沒必要整的這麼複雜🤣
現在整體優化完以後,部署一次也只需要兩分鐘了(本地跑,原因見後面 👀)
好用功能擴展#
雖然博客是 文章質量 > 用戶體驗,這點 hackernews 就是一個例子,我也感覺確實是這個關係
但是不衝突,在文章質量短時間內無法提升的情況下,提升用戶體驗也是個不錯的選擇哈哈哈,用戶體驗好了,互動率就高了,寫的動力就有了,也算是一種優化 hhh
訪問量#
訪問量統計這個方案,最早我想的使用 mongoDB 官方提供的可免費使用的 functions,實際上也跑通了,但是問題在與這個 server 在國外,每次加載 viewCount,都得轉個 10 來秒,其實用戶體驗確實不太行
現在的方案是用 N8N 的 workflow 提供 webhook,頁面初始化調用 webhook,執行邏輯把內容存到 PostgreSQL 裡,具體的內容我下一篇文章詳細展開哈哈哈,裡面有點乾坤
支持評論#
這裡先給 reorx 大佬點個讚,好像是在即刻上看到了大佬的 blog,拜讀的時候,發現大佬調研了很多技術實現方案,最終選擇了 remark42 作為解決方案,詳見 文章原文
blog 加評論這個確實是一個不好解決的問題,你要用戶體驗吧,國內不能用;你要國內能用吧,用戶體驗又不行,典型的兩難問題
好在 remark42 這個開源評論方案,解決了這個問題。目前我是在自己的雲伺服器上部署了 comment 的 server,整體還是比較穩定的,用了一段時間沒有發現問題,歡迎大家在文章最後留言測試一下哈哈哈哈
圖片資源加載速度慢#
這個問題最早在我發完《進擊的巨人》最終話圖冊,就意識到了,圖片一多,原來 Fly.io 提供的免費帶寬必然就不夠用了,而且我上傳的都是原圖,加載速度確實還是慢的哈哈哈
但是你說,好巧不巧,籃子裡的工具連上了。在把部署丟到 OSS 之後,直接在上面加一層 CDN,解決了問題,順理成章了
這裡我選用的是七牛雲的 OSS + CDN 服務。一個詞來形容為啥就是:便宜。之前註冊有學校的 edu 郵箱,可以免費使用一年 40G 的 OSS,所以就用上了
但是用完我就發現:果然貴的唯一缺點是貴,便宜的唯一優點是便宜。目前上傳使用比較麻煩,並且 qshell 的緩存策略有問題,失敗的文件不支持 retry 等等...
而且在 Github actions 跑 oss 上傳,很慢,因為 runner 在國外... 所以目前的邏輯還是本地跑 deploy 了,發布完還得手動處理一下,略顯麻煩,後面再優化一下吧
目前的緩存策略是不緩存 html,但是首頁緩存,不是因為性能,而是因為沒法 bypass 🤣
前面講到了資源放到了國內 OSS 上了,相對來說,國外的訪問就變慢了,這裡我是直接開全球 CDN,訪問量不大的情況下,價格也完全可以接受;如果願意折騰也可以考慮 DNS 劃分境外到 vercel 上,用上 vercel 的 cdn 應該能快不少,但是目前考慮到沒什麼國外流量,就先到這了👀
博客總結#
去年這麼一看,還是寫了幾篇文章的,雖然跟技術相關的不多,這個下次... 下次一定...
訪問量最高的一篇#
去年寫的 blog 的這篇,訪問量有 1K 了,主要流量是即刻導流,看来到 2022 年了,博客還是一個有熱度的話題哈哈哈
總結#
我其實最開始落筆寫這篇文章的時候,只想簡單記錄下,我是怎麼升級博客的技術棧的,後面想到,欸剛好這是我重新開始建站的一周年,是不是可以總結一下,之後發現又越寫越多
所以很多時候,我們是有很強的輸出能力和輸出欲望的,就是差那麼一個機會讓我們思考和整理自己的想法。寫日記也好寫博客也好,都是一個很好的形式,重點是寫👀
那麼都看到這裡了,想不想建一個站呢,如果想的話,我們可以聊聊呢哈哈哈。感興趣的話可以通過 about 的 discord 找到我,隨便聊聊哇
下一期更新我在 zeabur 的啟發下,個人折騰的一些小玩意👀,感興趣的朋友可以 RSS 訂閱一下哦 👀