我们在Amazon S3上托管我们的图片,并通过Amazon Cloudfront提供服务。我们想减少带宽费用。我们认为我们有很多带宽被盗,并希望开始使用签名网址来防止这种情况发生。但是,我们必须平衡这一事实,即每次我们发送一个新签名的URL时,它都会使图像的浏览器缓存无效。
我们当前的计划是生成一个有效期为两个月的签名网址,然后在生成新签名网址之前将其缓存在本地并提供一个月。这将允许浏览器将图像缓存更长时间。然而,这也意味着任何人都可以为图像提供长达两个月的带宽。
有没有办法让链接尽快过期,但让浏览器继续缓存该图像?我知道当url被重新签名用于新的时间戳时,图像的etag和If-Modified-Since不会改变,但是浏览器不再知道在头部中发送这些值,因为就其而言,这是一个新的URL。有没有解决这个问题的方法?
答案 0 :(得分:2)
您是否测量过多少带宽被盗?即,检查您的图像没有将引荐来源字段设置到您自己的网站的请求数量。
为了获得最佳缓存,我们建议缓存10年,所以2个月听起来有点短。
答案 1 :(得分:0)
需要多少缓存在很大程度上取决于您网站上访问者的访问模式。对于大多数网站,我会说给予一个月的缓存应该足以获得有效的缓存。
在投入大量精力之前,你应该对实际的水蛭成本作出具体的评价,并将其与解决问题的所有成本相提并论。
BTW:在某些情况下为您的图像加水印也非常有效。