【发布时间】:2019-02-11 17:57:07
【问题描述】:
在 Rails 5.2 中,Active Storage 使我们能够生成永久 url,通过每次调用时唯一的签名 url 重定向到资产。
html:
<img src='/rails/active_storage/blobs/ey...' />
服务器:
Started GET "/rails/active_storage/blobs/eyJfcmFpbH...
302 Redirected to https://bucket.amazon/image.jpg?X-Amz-Algorithm=AWS4-HMA...
我想知道 Active Storage 添加到单体应用程序的 HTTP 请求数量,网页中的一个 blob_url = 一个对单体应用程序的额外请求,以便通过 302 重定向获取最终资产 url。所以一页有 20 张图片 => 20 个额外的请求。 (但它们很快)
所以我的问题是:为什么使用这个系统而不是直接使用最终 URL (.service_url):
<img src='https://bucket.amazon/image.jpg?X-Amz-Algo...'>?
我正在考虑这些论点:(但还有其他的吗?)
- blob_url 可以被缓存在服务器端,因为它是永久的(例如:片段缓存)
- blob_url 可以通过身份验证来保护,这意味着可以共享唯一的 url,但有人需要身份验证才能看到资产,例如(通过修改 rails blob 控制器)
- 也许是第三个?更好的缓存浏览器端?浏览器是否能够使用永久 url 缓存图像数据?即使亚马逊网址有 5 分钟的过期时间?
【问题讨论】:
-
还能够在不杀死所有缓存存储的情况下切换提供程序(aws、google、azure)
标签: ruby-on-rails http http-headers cache-control rails-activestorage