使用@nuxtjs/sitemap 动态生成站点地图
Dynamically generate sitemap using @nuxtjs/sitemap
我正在使用 @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 的最新路由,
但之后就不会再更新了,
我该怎么做?
您的设置 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
我正在使用 @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 的最新路由,
但之后就不会再更新了,
我该怎么做?
您的设置 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