【问题标题】:Dynamically generate sitemap using @nuxtjs/sitemap使用@nuxtjs/sitemap 动态生成站点地图
【发布时间】:2021-06-24 11:35:29
【问题描述】:

我使用@nuxtjs/sitemap 作为我的站点地图生成器,其中一些路线是由 ajax 提供的。

每当有人访问 /sitemap.xml 时,我都需要它来获取最新的 api 数据,是否可以使用这个库来做到这一点?

我在 nuxt.config.js 中的配置:

{
  sitemap: {
    defaults: {
      lastmod: new Date(),
    },
    routes: async () => {
      const { data } = await axios.get(
        'https://jsonplaceholder.typicode.com/posts'
      )
      return data.map((post) => `/posts/${post.id}`)
    },

    cacheTime: 1,
  },
}

当我激活我的服务器并访问 /sitemap.xml,

它以正确的 lastmod 显示最新路线,

但之后就不会再更新了,

我该怎么做?

【问题讨论】:

    标签: nuxt.js sitemap


    【解决方案1】:

    您的设置looks fine 到目前为止运行良好,问题是站点地图可能是在构建期间创建的。 所以,如果:

    • target: static >> yarn generate && yarn start
    • target: server(默认)>>yarn build && yarn start

    这在现实世界的场景中应该可以正常工作,因为您会将一些新代码推送到您的托管平台,它会构建您的新应用程序。
    因此它将创建新的更新站点地图。


    这也可能是因为默认cacheTime 设置为15 分钟。也许尝试将其更改为更小的东西。


    您的网站是否应该在没有新版本的情况下具有动态移动的部分,比如依赖于高度动态的 API 或类似的?
    如果是这种情况,也许可以寻找这个 Github 问题:https://github.com/nuxt-community/sitemap-module/issues/186

    【讨论】:

    • Mr.kissu 我想我明白了。发生这种情况是因为我愚蠢地设置了默认值:{ lastmod: new Date() },在我的情况下,我应该将 lastmod 包装到 axios 调用中
    • 例如,return data.map((post) => ({ url: /posts/${post.id}, lastmod: new Date(), }))
    猜你喜欢
    • 2021-04-05
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多