suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So fügen Sie Cache-Steuerung in generierten statischen Dateien hinzu (Nuxt 3)

Ich verwende Nuxt 3, um ein SSR-Projekt zu erstellen. Ich denke darüber nach, die generierten statischen Dateien im Verzeichnis Cache-Control 标头添加到 .output/_nuxt abzulegen.

Ich habe den folgenden Code ausprobiert server/middleware/cache-control.ts

1

2

3

4

5

6

7

8

export default defineEventHandler((event) => {

  let res = event.res

  const year = 31536000

  const tenmin = 600

  const url = event.req.url

  const maxage = url.match(/(.+).(jpg|jpeg|gif|css|png|js|ico|svg|mjs)/) ? year : tenmin

  res.setHeader('Cache-Control', `max-age=${maxage} s-maxage=${maxage}`);

})

Aber es funktioniert nicht.

Wie füge ich Cache-Control zu den generierten statischen Dateien hinzu?

P粉765684602P粉765684602418 Tage vor732

Antworte allen(2)Ich werde antworten

  • P粉124070451

    P粉1240704512023-11-06 00:30:22

    对于 Nuxt3,我将其用作服务器中间件 server/middleware/cache-control.js

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    export default defineEventHandler((event) => {

      if (process.env.NODE_ENV == "production") {

        const url = event.node.req.url;

        const maxage = url.match(/(.+)\.(jpg|jpeg|gif|png|ico|svg|css|js|mjs)/)

          ? 60 * 60 * 12 * 30

          : 60 * 60;

        appendHeader(

          event,

          "Cache-Control",

          `max-age=${maxage} s-maxage=${maxage}`

        );

      } else {

        appendHeader(event, "Cache-Control", `max-age=${60} s-maxage=${60}`);

      }

    });

    Antwort
    0
  • P粉618358260

    P粉6183582602023-11-06 00:03:59

    我自己想办法。将以下代码添加到 nuxt.config.js 会将缓存控制附加到静态文件中。感谢您的支持!

    1

    2

    3

    4

    5

    6

    7

    8

    export default defineNuxtConfig({

      nitro: {

        routeRules: {

          "/img/**": { headers: { 'cache-control': `public,max-age=${year},s-maxage=${year}` } },

          "/_nuxt/**": { headers: { 'cache-control': `public,max-age=${year},s-maxage=${year}` } },

        }

      }

    })

    Antwort
    0
  • StornierenAntwort