我在 Ember 中有一个小型通信应用程序,每 10 秒轮询一次服务器以获取新数据。
在每个线程旁边,或在线程下回复,都有一个用户区域,显示用户的电子邮件、头像和徽章。头像托管在 s3 上,每次站点发送 JSON 数据时,都会为 s3 上的每个头像发送一个获取请求。
头像旁边还有其他图像,例如徽章图标,但它们托管在 Rails 公共文件夹中,不会触发获取请求。
为什么会这样?每次从服务器返回 JSON 时,有没有办法缓存或抑制 get 请求?
为什么会这样?
听起来您的某些视图在获取新数据时会重新渲染。可以通过更改模板的结构来防止这种情况发生,但这对于这种情况来说可能是多余的。如果您想查看发生了什么,请尝试在视图重新渲染时将检测添加到您的应用程序到 console.log:如何分析 ember 的页面渲染性能?
假设头像和其他图像都被重新渲染,s3 可能会触发新的 get 请求,因为 s3 返回的标头未设置为允许浏览器缓存。
每次从服务器返回 JSON 时,有没有办法缓存或抑制 get 请求?
是的,调整 s3 图像的设置,以便浏览器缓存它们。
Expires
标题Cache-Control
和Last-Modified