<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Loading

      Next.js路由段配置選項筆記

      前言

      大家好,我是曦遠。

      本來是想發昨晚寫好的 starblog 管理后臺重構文章的

      結果打開 blog 才發現忘記提交了??

      所以寫一篇新的吧

      正好最近正在大量使用 Next.js

      我發現部署后的首次渲染很慢,才意識到「預熱」這個問題

      當然這是后話了

      這個框架里有大量的官方約定

      這些在官方文檔里都有的,就是比較分散,本文主要是概括一下這些約定

      Next.js框架更新得很快,不一樣的地方以官方文檔為主。

      緩存和渲染相關

      // 控制頁面重新驗證的時間間隔(秒)
      export const revalidate = 60; // 60秒后重新驗證
      export const revalidate = 0;  // 禁用緩存
      export const revalidate = false; // 永久緩存
      
      // 控制頁面的渲染模式
      export const dynamic = 'auto';          // 默認,自動選擇
      export const dynamic = 'force-dynamic'; // 強制動態渲染
      export const dynamic = 'force-static';  // 強制靜態渲染
      export const dynamic = 'error';         // 如果使用動態函數則報錯
      
      // 控制動態段的行為
      export const dynamicParams = true;  // 允許動態參數(默認)
      export const dynamicParams = false; // 不允許動態參數
      

      運行時配置

      // 指定運行時環境
      export const runtime = 'nodejs';    // Node.js 運行時(默認)
      export const runtime = 'edge';      // Edge 運行時
      
      // 設置最大執行時間(秒)
      export const maxDuration = 30; // 最多執行30秒
      

      獲取數據相關

      // 控制 fetch 請求的緩存行為
      export const fetchCache = 'auto';           // 默認緩存行為
      export const fetchCache = 'default-cache';  // 默認緩存
      export const fetchCache = 'only-cache';     // 只使用緩存
      export const fetchCache = 'force-cache';    // 強制緩存
      export const fetchCache = 'default-no-store'; // 默認不緩存
      export const fetchCache = 'only-no-store';  // 只允許不緩存
      export const fetchCache = 'force-no-store'; // 強制不緩存
      

      元數據和SEO

      元數據

      動態生成元數據

      import type { Metadata } from 'next'
      
      export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {
        // 根據動態參數獲取數據
        const post = await getPost(params.slug)
        
        return {
          title: post.title,
          description: post.description,
          openGraph: {
            title: post.title,
            description: post.description,
            images: [post.image],
          },
        }
      }
      

      定義靜態元數據

      // 靜態元數據
      export const metadata: Metadata = {
        title: 'My Page',
        description: 'This is my page description',
        keywords: ['next.js', 'react', 'typescript'],
        openGraph: {
          title: 'My Page',
          description: 'This is my page description',
        },
      }
      

      使用場景

      靜態 Metadata 適用于:

      • 內容固定的頁面(如關于我們、聯系我們)
      • 不需要根據路由參數變化的頁面
      • 簡單的靜態頁面

      動態 Metadata 適用于:

      • 博客文章詳情頁(根據文章 slug 獲取標題、描述)
      • 產品詳情頁(根據產品 ID 獲取信息)
      • 用戶個人資料頁(根據用戶 ID 獲取信息)
      • 任何需要根據路由參數或外部數據動態生成 metadata 的頁面

      靜態參數

      // 生成靜態參數(用于動態路由)
      export async function generateStaticParams() {
        return [
          { slug: 'post-1' },
          { slug: 'post-2' },
        ];
      }
      

      常用組合示例

      完全靜態頁面

      export const dynamic = 'force-static';
      export const revalidate = false;
      

      實時動態頁面

      export const dynamic = 'force-dynamic';
      export const revalidate = 0;
      

      定時更新頁面

      export const revalidate = 3600; // 每小時更新一次
      

      Edge 運行時優化

      export const runtime = 'edge';
      export const dynamic = 'force-dynamic';
      

      API 路由配置

      // 在 API 路由中也可以使用
      export const runtime = 'edge';
      export const maxDuration = 10;
      

      使用場景建議

      配置 適用場景
      revalidate = 0 實時數據展示,如股票價格、聊天應用
      revalidate = 60 定期更新的內容,如新聞、博客
      dynamic = 'force-static' 完全靜態的頁面,如關于我們
      dynamic = 'force-dynamic' 個性化內容,如用戶儀表板
      runtime = 'edge' 需要低延遲的全球分發
      fetchCache = 'force-no-store' 敏感數據,不允許緩存

      注意事項

      1. 只能在頁面或布局文件中使用 :這些配置只在 page.tsx 、 layout.tsx 或 route.ts 文件中有效
      2. 這些配置選項只能在 Server Component Pages、Layouts 或 Route Handlers 中使用
      3. 必須是具名導出 :必須使用 export const 語法
      4. 配置值必須是 靜態可分析的 (例如 revalidate = 600 有效,但 revalidate = 60 * 10 無效)
      5. 類型安全 :TypeScript 會檢查這些配置的類型
      6. 優先級 :子路由的配置會覆蓋父路由的配置

      這些配置選項讓 Next.js 能夠精確控制每個頁面的渲染和緩存行為,是 App Router 架構的核心特性之一

      官方文檔

      Route Segment Config(路由段配置)

      相關文檔頁面

      1. Dynamic Routes(動態路由)

      2. Data Fetching and Caching(數據獲取和緩存)

      3. Rendering(渲染)

      posted @ 2025-11-03 21:27  程序設計實驗室  閱讀(80)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精成人品日日拍夜夜| 日日碰狠狠添天天爽五月婷| 亚洲av二区国产精品| 99精品国产一区二区三区2021 | 狠狠色狠狠色五月激情| 欧美人与动牲交A免费观看| 国产免费午夜福利在线播放| 国产日产亚洲系列最新| 国产欧美日韩精品第二区| 亚洲男人第一无码av网| 亚洲一区二区不卡av| 亚洲成人www| 亚洲人成网站18禁止无码| 亚洲av日韩av永久无码电影| 午夜无码国产18禁| 夜爽8888视频在线观看| av日韩精品在线播放| 丰满人妻熟妇乱又仑精品| 欧洲码亚洲码的区别入口| 亚洲码国产精品高潮在线| 巴彦县| 国产精品一二三入口播放| 在线一区二区中文字幕| 日本亚洲中文字幕不卡| 欧美级特黄aaaaaa片| 国产亚洲精品成人aa片新蒲金| 亚洲无人区码一二三四区| 国产午夜精品理论大片| 亚洲欧美人成网站在线观看看| 亚洲高清免费在线观看| 真人在线射美女视频在线观看 | 久久天天躁狠狠躁夜夜躁2020| 亚洲精中文字幕二区三区| 中文字幕日韩精品有码| 自拍偷自拍亚洲一区二区| 国产福利酱国产一区二区| 亚洲午夜成人精品电影在线观看| 成人av久久一区二区三区| 97在线观看视频免费| 国产精品午夜福利在线观看| 国产中年熟女高潮大集合|