我將臺(tái)灣各地的港口資料都上傳至mongodb atlas,包含座標(biāo)與漁港的分類,所以很仰賴雲(yún)端資料庫(kù),但是這周遇到的問(wèn)題是重新整理網(wǎng)頁(yè),地標(biāo)會(huì)消失不見(jiàn),過(guò)了幾分鐘會(huì)再次出現(xiàn)地標(biāo)。
會(huì)發(fā)生這情況是因?yàn)槊看沃匦抡砭W(wǎng)頁(yè),程式就會(huì)跟著重新讀取資料庫(kù),但這樣非常浪費(fèi)資料庫(kù)的資源,而且使用者可不會(huì)等這麼久,所以我在程式添加了緩存(cache)的功能,讓資料暫存在快取記憶體,每次整理網(wǎng)頁(yè)就不需要讓程式一直重新讀取資料庫(kù)。
我使用了redis作為緩存資料庫(kù),因?yàn)檫@家供應(yīng)商有提供免費(fèi)的雲(yún)端資料庫(kù)服務(wù),這樣一來(lái)重新整理之後就會(huì)從記憶體讀取,還可以減省資料庫(kù)的效能,提升用戶使用體驗(yàn)。
main.py
※我使用Flask開(kāi)發(fā)網(wǎng)頁(yè),flask-caching是Flask的擴(kuò)展模組,用來(lái)實(shí)作快取功能。
※configparser這模組可以抓取ini中保存的敏感資料,包括API Key與token。
※Flask不應(yīng)該這樣寫的,因?yàn)榧軜?gòu)會(huì)變得很大,其實(shí)應(yīng)該要使用blueprint的功能。
成功的話可以看見(jiàn)設(shè)定好的座標(biāo)。
週五要把程式碼的架構(gòu)重寫一遍