深入了解查詢層級快取(per-query caching)的好處,看看它如何提升查詢速度、應對流量激增、最小化基礎設施成本,並提升用戶滿意度。了解如何輕鬆導入 Prisma Accelerate,實現更優異的應用程式效能與成本節省。
想像一下:您與團隊剛發布了最新的應用程式 SuperWidget。每個人都感到非常興奮,您也確信它會大受歡迎……事實也確實如此!SuperWidget 突然被全球各大公司廣泛使用。然而,您很快意識到流量遠超預期,應用程式的效能開始下降。
為了應對這一點,您的團隊迅速採取行動。您深入查看應用程式監控,發現應用程式中的幾個查詢所帶來的影響遠超預期。經過一個漫長的夜晚,您的團隊實施了多項基礎設施改善,其中最顯著的是建立了一個強大的快取層,從而減輕了其餘基礎設施的負擔。SuperWidget 的效能不再受到負面影響,新客戶也對體驗感到滿意。
那麼,您和您的團隊原本可以做得更好嗎?
雖然您的團隊能力出眾,但「救火」和熬夜絕對是您最不想碰到的事。上述解決方案仍然需要協調工作,並浪費了大量的工程時間。相反地,您本可以透過使用 Prisma Accelerate 輕鬆快取查詢,從而節省時間並避免挫折。
為什麼您應該快取資料庫查詢
正如您在上面的例子中所看到的,當您需要減少資料庫或應用程式負載時,快取是非常棒的解決方案。透過快取,您可以從載入應用程式所需的時間(即「關鍵路徑」)中移除昂貴的操作。隨後的請求可以使用這些快取資料,從而避免花費應用程式或資料庫的時間來計算結果。如果減少應用程式負載所帶來的穩定性還不夠,更少的運算時間也意味著您的基礎設施可以支援更高的工作負載,或者您的應用程式可以在更低規格的硬體上運行,進而節省金錢!


另一個快取的理由是降低流量輸出成本(egress costs)。許多雲端供應商會針對離開其服務的資料收取流量輸出費用。這可能包括從資料庫中提供的資料列、靜態影像,甚至是進出其他服務的回應。
雖然更快的載入時間和降低成本是快取的直接好處,但它們還帶來了另一個優點:提升應用程式的感知體驗!更快的載入時間會帶來更愉快的體驗和更滿意的客戶。即使訪客沒有付費,一個感覺載入緩慢的應用程式,最好情況是讓用戶不斷重新整理,最壞情況則是讓他們徹底離去。
在考慮是否要快取某個查詢時,除了其他因素外,您絕對應該牢記這三個原因。幸運的是,Prisma Accelerate 可以提供幫助:Accelerate 具備以最低流量輸出成本實現查詢層級快取的功能。使用 Prisma Accelerate,您可以輕鬆且快速地快取問題查詢。
在第一種情況下,昂貴或頻繁存取的查詢可能會壓垮您的資料庫,查詢層級快取將在資料快取期間防止該負載。如果成本是主要的考量,您的資料將從資料庫存取一次,然後儲存在 Accelerate 的全球分布式節點集合中,從而防止後續資料庫讀取所產生的額外成本,同時讓您的應用程式跑得更快!
何時進行快取
既然您已經知道為什麼以及如何進行快取,您可能很想開始對每個查詢都進行快取。但在您這樣做之前,請注意我們範例中發生的情況:您和您的團隊在實施快取*之前*監控了應用程式。
快取雖好,但任何新增的功能都可能產生成本或導致意外的副作用。在 Prisma,我們非常推崇「可觀測性導向開發」(observability-driven development):對您的應用程式進行檢測,並做出明智的決策。快取應是在多種選項中經過深思熟慮後的選擇。例如,如果您需要某個查詢始終包含完全即時的資料,那麼快取可能不適合。另一方面,對於資料不常變動或不需要即時性的情況,快取則是絕佳選擇。
這並不是說您必須在實施任何快取之前監控生產流量。快取也可以是開發過程中的實用工具!如果您在開發環境中有自動化測試,並且發現了緩慢的查詢,請使用 Accelerate 快速快取該查詢並測量結果。如果您看到顯著的改善,那麼快取可能就很適合。無論處於什麼環境,建議始終相同:測量與基準測試、進行更改,然後再次測量。
如果您對查詢洞察力(query insights)感興趣,並希望更深入地優化效能,請查看 Prisma Optimize!
Prisma Accelerate 如何提供幫助
正如您在上面看到的,透過 Prisma Accelerate 新增快取就像在查詢中新增一個 cacheStrategy 選項一樣簡單。由於使用 Prisma Accelerate 進行查詢快取是基於查詢層級(per-query basis)的,您只需為您真正快取的查詢付費。應用程式的其餘部分將照常運行。一旦您確定特定查詢需要快取,只需幾行程式碼即可完成!
除了能夠快速且輕鬆地實作快取外,使用 Prisma Accelerate 還意味著無需架設額外的快取基礎設施。雖然雲端供應商提供了託管的鍵值儲存(key-value stores),但即便在最佳情況下,您仍然需要手動插入資料、管理索引和複寫,並確保在資料變動時進行失效處理(invalidation)。有了 Prisma Accelerate,這些全都由我們為您處理!只需為您想要快取的查詢新增快取策略,然後繼續構建更多精彩的功能即可。

Prisma Accelerate 適合我嗎?
在研究任何軟體時,總是有很多選擇。我們發現 Accelerate 非常適合以下類型的應用程式:
- 靜態內容,例如部落格文章
- 複雜的查詢,例如與計費相關的用量計算任務
- 讀取密集的應用程式,例如社群媒體平台、新聞聚合器和電子商務網站
Accelerate 也非常適合希望快速培訓工程師的團隊。由於 Accelerate 提供託管的基礎設施並內建於 Prisma Client 中,即使是不熟悉您程式碼庫的新團隊成員也能輕鬆快取查詢。
Prisma Accelerate 不僅僅是一個快取!Accelerate 具有邊緣分布式(edge distributed)特性,並處理連線池(connection pooling)。請務必查看完整的文件。
總結
快取仍然是軟體工程中的「難題」之一,這點無庸置疑!僅僅快取更多東西並不能解決問題,團隊需要花時間了解什麼可以快取,以及它將如何影響他們的產品。
雖然有許多不同的快取方法,但 Prisma Accelerate 讓您可以輕鬆地以查詢為單位實作快取,讓您有更多時間專注於建構出色的產品。如果您想邁出下一步,請深入了解 Accelerate 並立即開始快取您的 Prisma ORM 查詢。
開始使用 Accelerate 進行快取
不要錯過下一篇貼文!
訂閱 Prisma 電子報