首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚马逊网络服务S3缓存文件

亚马逊网络服务S3缓存文件
EN

Stack Overflow用户
提问于 2018-02-24 03:14:10
回答 2查看 499关注 0票数 0

我正在从一个S3桶中提供我的all应用程序的所有图像。问题是,如果我通过Java SDK更新文件,由于缓存的原因,网站不会刷新图像。

我知道缓存是一件非常好的事情。我的问题是,我公开了一个文章目录,图像是由它们的文章代码命名的。例如,文章ABC101的图像是abc101.jpg;所以重命名图像对我来说不是一个选择。

我根本不想超过缓存,只有当图像更新时。

我如何才能做到这一点?镜像几乎每天更新,由于这个问题,用户无法看到新的镜像。

EN

回答 2

Stack Overflow用户

发布于 2018-02-24 03:30:53

根据您的应用程序,缓存图像可能是一件好事:页面加载将更快,它减少了流量,等等。

在处理缓存时,您所能做的最好的事情就是向下游“推荐”您希望您的图像缓存多长时间。但请记住,你没有办法强迫他们服从你的“建议”。

因此,与其试图“击败”缓存,不如(a)拥抱缓存并将其用于您的优势,以及(b)在S3中更新图像名称时更改它们。

  1. 通过有效地使用缓存头,如Cache-Controlmaxages-maxage等,故意让你的图像在缓存中有很长的生命周期。这将减少页面加载时间,当你的图像没有updated.
  2. When时,你有一个新的图像要通过你的Java SDK上传,而不是覆盖现有的图像,创建一个新的图像,并在下一次页面加载时使用它。这样,由于镜像名称是新的,客户端将被强制下载。

然而,如果你坚持“击败”缓存,你能做的最好的就是给你的图像一个非常短的(例如。0秒)使用缓存头的缓存寿命。但如果您这样做,他们将不断下载和重新下载图像时,他们没有改变。

票数 0
EN

Stack Overflow用户

发布于 2018-02-24 05:51:04

您可以通过在urls中添加未使用的参数来解决此问题,例如,将img src="myimage.jpg“改为myimage.jpg?v=20180223 (例如)

很可能你可以自动生成这个url‘版本’号。例如,对于我支持的大型asp.net应用程序,我们使用了内部版本号。每次将构建推送到生产环境时,都会以编程方式更新?v=xxxxx参数;您可以为您的特定设置定制该策略。

包含额外的参数将迫使浏览器请求最新的图像,并将其缓存,直到“版本”更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48954753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档