我使用aws s3 buckets来存储我的资产。当任何现有资产从前端发生变化时(例如:客户端改变了他的个人资料图片)的后端,我将改变资产,只有不接触的网址。现在这里是我的网站中的问题,我在getStaticProps中使用revalidate,但仍然因为链接是相同的,图像的缓存版本没有更新,所以有什么方法可以以编程方式更新这些图像缓存?顺便说一下,当我点击DevTools并从Network选项卡看到预览时,它显示了资产的正确版本
vlf7wbxs1#
如果你添加一个时间戳到你的图像url作为查询参数,它可以在客户端渲染。不确定服务器端渲染。给予看
const url = 'http://someHost.someBucket.someImageName.jpeg' const timeStamp = new Date().getTime() <img src={`${url}?${timestamp}`} />
oknwwptz2#
根据Nazrul的回答,我提出了以下方法来优化我的情况(并使用Next Image组件):
const media = { url: 'http://someHost.someBucket.someImageName.jpeg', id: '123456789' } <Image src={`${media.url}?${media.id}`} />
我在一个用户可更新的页面中使用这个,如果我使用时间戳选项,我经常会为我的图像获取一个加载器,而实际上并不需要重新缓存。对我来说,使用id(只有当媒体是全新的时才会改变)可以减少重新缓存的次数。
2条答案
按热度按时间vlf7wbxs1#
如果你添加一个时间戳到你的图像url作为查询参数,它可以在客户端渲染。不确定服务器端渲染。给予看
oknwwptz2#
根据Nazrul的回答,我提出了以下方法来优化我的情况(并使用Next Image组件):
我在一个用户可更新的页面中使用这个,如果我使用时间戳选项,我经常会为我的图像获取一个加载器,而实际上并不需要重新缓存。对我来说,使用id(只有当媒体是全新的时才会改变)可以减少重新缓存的次数。