」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Next.js 快取:透過高效的資料獲取來增強您的應用程式

Next.js 快取:透過高效的資料獲取來增強您的應用程式

發佈於2024-11-08
瀏覽:281

Next.js 中的快取不僅是為了節省時間,還在於減少冗餘網路請求、保持資料新鮮並使您的應用程式像搖滾明星一樣運作。
無論您是想將資料快取更長時間還是按需刷新,Next.js 都能為您提供所需的所有工具。在本文中,我們將詳細介紹如何在 Next.js 中有效地使用快取

Next.js 擴充了 fetch API,為您提供快取方面的超能力。使用 cache: 'no-store'cache: 'force-cache' 等簡單的取得選項,您可以輕鬆控制資料快取的時間和方式。

始終保持新鮮快取:'no-store'(相當於unstable_noStore())

每次都想要新鮮數據嗎? cache: 'no-store' 是可以使用的。此獲取選項完全跳過快取並在每次請求時獲取最新資料。當您需要即時準確性時,它是完美的 - 不允許昨天提取的剩餘內容。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

注意:如果您想跳過伺服器元件上的緩存,也可以使用unstable_noStore()。語法稍後可能會更改,因此請堅持使用 cache: 'no-store' 以確保穩定性。

透過快取重複使用資料:'force-cache'(相當於unstable_cache())

另一方面,如果您可以使用快取資料(考慮不經常變更的靜態內容),請使用 cache: 'force-cache'。它將保存回應以供將來使用並跳過冗餘的網路請求。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

注意:unstable_cache() 也會快取數據,但如果您要避免將來發生意外,使用穩定的 cache: 'force-cache' 會更可靠。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

透過重新驗證保持新鮮感

有時快取的資料需要刷新-無論是在特定時間之後還是由事件觸發時。幸運的是,Next.js 允許您透過多種方式重新驗證快取的資料。

使用時間重新驗證:next.revalidate

如果您的資料需要定期刷新(例如每小時或每天),您可以使用提取請求中的 next.revalidate 選項來設定重新驗證期間。它將在您指定的時間後獲取最新數據,同時在其餘時間保留快取內容。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

fetch('https://api.example.com/data', {
  next: { revalidate: 3600 }  // Revalidate data every hour (3600 seconds)
});

帶有標籤的按需重新驗證:revalidateTag()

現在,想像一下,您可以告訴 Next.js 在發生重要事件(例如表單提交或新部落格文章上線)時刷新快取資料的特定位元。您可以為快取的資料指派標籤,然後在需要時重新驗證這些標籤。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

這樣,您可以根據需要手動刷新部分緩存,而無需等待下一次計劃的重新驗證。

使用不穩定的方法

如果您是喜歡冒險的人,您也可以直接在伺服器元件上使用 unstable_noStore()unstable_cache() 方法來管理快取行為。請記住,這些「不穩定」是有原因的,因此它們將來可能會發生變化(或者在您閱讀時可能會發生變化)。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

或者,如果您熱衷於緩存,請按以下方法使用 stable_cache():

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

跳過支柱鑽孔

這裡有一個巧妙的技巧:如果您要跨多個組件(例如佈局、頁面和一些內部組件)獲取相同的數據,請不要強調在頂部獲取一次並將其向下傳遞或必須在多個組件上多次請求該資料會導致效能下降。 Next.js 在伺服器渲染期間自動記住獲取請求,這意味著如果您多次獲取相同的數據,它足夠智能,只需訪問網路一次並在多個組件中共享結果。

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

Next.js Caching: Turbocharging Your App with Efficient Data Fetching

總結一下

Next.js 為您提供了有效管理快取所需的所有工具,無論是透過fetch API 選項,例如cache: 'no-store'cache: 'force-cache ',或更具實驗性的unstable_noStore() 和unstable_cache() 方法。加上 next.revalidaterevalidateTag 等重新驗證策略,您就擁有了保持資料新鮮所需的一切。

來源:
Next.js 快取

版本聲明 本文轉載於:https://dev.to/samaghapour/nextjs-caching-turbocharging-your-app-with-efficient-data-fetching-51hb?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用 CSS 設定表格列寬?
    如何使用 CSS 設定表格列寬?
    設定表格列寬表格通常用於呈現表格數據,但調整列寬對於確保可讀性和正確性至關重要結盟。在本文中,我們將探討如何使用 CSS 設定表格列的寬度。 使用 CSS 寬度屬性的方法表格列的寬度可以使用 col 元素的 width 屬性進行設定。寬度值可以以像素為單位指定(例如 width: 200px;),也...
    程式設計 發佈於2024-11-08
  • 如何從 Python 中的巢狀函數存取非局部變數?
    如何從 Python 中的巢狀函數存取非局部變數?
    存取嵌套函數作用域中的非局部變數在Python 中,嵌套函數作用域提供對封閉作用域的訪問。但是,嘗試修改巢狀函數內封閉範圍內的變數可能會導致 UnboundLocalError。 要解決此問題,您有多種選擇:1。使用 'nonlocal' 關鍵字 (Python 3 ):對於 Pyt...
    程式設計 發佈於2024-11-08
  • 使用 CSS 將漸層應用於文字。
    使用 CSS 將漸層應用於文字。
    文字漸變 現在你可以在很多地方看到像文字漸變這樣的好技巧......但是呢?你有沒有想過它們是如何製作的?今天就讓我來教你。 .text-gradient { background: linear-gradient(-25deg, #5662f6 0%, #7fffd4 10...
    程式設計 發佈於2024-11-08
  • 如何在Python中執行自訂區間舍入?
    如何在Python中執行自訂區間舍入?
    Python 中捨入為自訂間隔在 Python 中,內建 round() 函數通常用於對數值進行舍入。然而,它採用以 10 為基數的捨入方案,這可能並不總是適合特定要求。例如,如果您想將數字四捨五入到最接近的 5 倍數,則標準 round() 函數不合適。 要解決此問題,可以建立自訂函數,將數值四捨...
    程式設計 發佈於2024-11-08
  • 項目 注意字串連接效能
    項目 注意字串連接效能
    1。使用運算子 ( ) 連接字串: 使用運算子連接字串對於少量連接來說很方便,但由於字串的不變性,在大規模操作時會出現效能問題。 每次建立新字串時,都會複製所有先前字串的內容,從而導致大型連接的時間成二次方。 不正確的例子(與 重複連接): public String criaFatura(Li...
    程式設計 發佈於2024-11-08
  • 如何解決 Wamp 伺服器中的橘色圖示問題:識別服務故障並對其進行故障排除
    如何解決 Wamp 伺服器中的橘色圖示問題:識別服務故障並對其進行故障排除
    解決Wamp Server 中頑固的橙色圖標解決Wamp Server 中頑固的橙色圖標在Web 開發領域,WampServer 圖標旁邊出現橙色圖標可以成為令人沮喪的橙色路障。此持久性圖示通常表示啟動 Apache 或 MySQL 服務失敗,使您陷入開發困境。 識別罪魁禍首:Apache 或 My...
    程式設計 發佈於2024-11-08
  • 網路基礎知識
    網路基礎知識
    In the world of system design, networks are the glue that binds different components together. Whether you're building a web application, a distribute...
    程式設計 發佈於2024-11-08
  • Python 初學者教學:學習基礎知識
    Python 初學者教學:學習基礎知識
    欢迎来到Python编程的奇妙世界!如果您是编码新手,请系好安全带,因为 Python 是最简单但最强大的语言之一。无论您是想自动执行繁琐的任务、构建 Web 应用程序还是深入研究数据科学,Python 都是您成功编码的门户。 在本初学者指南中,我们将引导您完成 Python 的基本构建块,确保您准...
    程式設計 發佈於2024-11-08
  • 如何提取MySQL字串中第三個空格之後的子字串?
    如何提取MySQL字串中第三個空格之後的子字串?
    MySQL:提取字串中的第三個索引要使用MySQL 定位字串中第三個空格的索引,一種方法是利用SUBSTRING_INDEX 函數。此函數可以提取直到指定分隔符號(在本例中為空格字元)的子字串。 要隔離第三個空格,您可以使用兩個巢狀的 SUBSTRING_INDEX 呼叫。內部函數呼叫檢索從字串開頭...
    程式設計 發佈於2024-11-08
  • 如果無法存取已指派的空間,為什麼要為 ArrayList 設定初始大小?
    如果無法存取已指派的空間,為什麼要為 ArrayList 設定初始大小?
    了解 ArrayList 中的初始大小在 Java 中,ArrayList 是動態數組,可以根據需要增長和縮小。可以使用建構子 new ArrayList(10) 指定 ArrayList 的初始大小,其中 10 表示所需的容量。 但是,設定初始大小並未授予立即存取已指派空間的權限。與傳統陣列不同,...
    程式設計 發佈於2024-11-08
  • 如何在不改變系統設定的情況下使Python 2.7成為Linux中的預設版本?
    如何在不改變系統設定的情況下使Python 2.7成為Linux中的預設版本?
    Linux 中的預設 Python 版本:選擇 Python 2.7在 Linux 系統上運行多個 Python 版本是常見的情況。然而,瀏覽預設版本有時可能會很困難。本文討論如何在終端機上鍵入「python」命令時將 Python 2.7 設為預設版本。 預設 Python 更改的評估更改預設 P...
    程式設計 發佈於2024-11-08
  • 如何根據多個條件對 Go 中具有嵌套切片的結構切片進行排序?
    如何根據多個條件對 Go 中具有嵌套切片的結構切片進行排序?
    使用嵌套切片對結構體切片進行排序在Go 中,您可以使用內建的排序包對自訂結構體切片進行排序。考慮以下程式碼,它定義了兩個結構體 Parent 和 Child,表示父子關係:type Parent struct { id string children []Child } ...
    程式設計 發佈於2024-11-08
  • C# | Web Api 的提示和技巧
    C# | Web Api 的提示和技巧
    筆記 您可以查看我個人網站上的其他帖子:https://hbolajraf.net Web Api 的提示和技巧 用 C# 建立 Web API 是創建可擴展且高效的後端服務的強大方法。以下是一些提示和技巧,可協助您充分利用 C# Web API 開發。 1.使...
    程式設計 發佈於2024-11-08
  • JavaScript 模組
    JavaScript 模組
    現在我們不再將所有 JS 寫在一個文件中並發送給客戶端。 今天,我們將程式碼編寫到模組中,這些模組之間共享資料並且更易於維護。 約定是使用駝峰命名法命名模組。 我們甚至可以透過 npm 儲存庫將第 3 方模組包含到我們自己的程式碼中,例如 jquery、react、webpack、babel...
    程式設計 發佈於2024-11-08
  • 適合前端開發人員的最佳 JavaScript 框架
    適合前端開發人員的最佳 JavaScript 框架
    要開始您作為前端開發人員的旅程,選擇正確的 JavaScript 框架可以顯著影響您的學習曲線和專案成功。以下是每個前端開發人員都應該選擇的一些最佳 JavaScript 框架。 1. 反應 React 是一個廣泛使用的 JavaScript 函式庫,用於建立使用者介面,主要關注單...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3