azure - 在浏览器中缓存 Azure 提供的图像

标签 azure browser-cache azure-blob-storage response-headers

我在 Azure 容器中存储了一些以 blob 形式存储的图像。

我正在尝试让浏览器(Chrome)缓存这些图像以节省带宽。我读过很多帖子,指出这可以通过设置 Cache-Control 响应 header 来实现。我正在使用 Microsoft Azure 存储资源管理器来修改这些 header ,例如:

public, max-age=7776000

Microsoft Azure Storage Explorer

加载此图像 ( https://XXXXXXXX.blob.core.windows.net/XXXXXXXX/Themes/summer.jpg ) 时,这是我使用 Google Chrome 开发者工具看到的内容:

Dev Tools

这对图像的缓存没有任何影响。我已经尝试了允许的 CacheControl 的许多不同排列。属性,但我根本没有看到任何缓存正在进行。状态始终为200 ,但我期待304缓存命中。这是正确的吗?

无论是 CacheControl我提供的字符串始终显示在 Chrome 的结果中;它似乎对缓存方面没有任何影响。我尝试过 public 的变体, private , max-age , s-maxage , must-revalidate 。为了完整起见,no-cacheno-store 。没有观察到差异。

上面的图片需要 900ms+ 为我加载。然而,在本地保存时,相同的图像需要19ms。我希望如果浏览器缓存图像,那么它的时间将等于本地时间。

其他帖子表明 Azure CDN使用。但是,我不想走这条路,因为使用这些图像的网站不需要这样做。

我是否缺少 Azure 中允许缓存的设置?直接在浏览器中或网页中加载图像也没有什么区别。

有人可以提供帮助吗?如果需要任何其他信息,请告诉我。

最佳答案

CacheControl 设置应该生效。

使用 Chrome 时,请确保您没有选择“禁用缓存”选项。

在 Chrome 中为 CacheControl 设置 max-age=xx 时,我可以看到预期的行为。

enter image description here

关于azure - 在浏览器中缓存 Azure 提供的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61603255/

相关文章:

javascript - 当前浏览器缓存的当前文件类型

Azure ARM 模板

azure - 如何在 Azure Blob 上存储电子邮件以进行队列处理?

jquery - asp.net 网站性能 - 1 个页面缓慢会影响同一浏览器 session 上的其余页面

azure - 通过 IIS 管理器 (inetmgr) 连接到 Azure 应用服务

node.js - NGINX 浏览器缓存不工作 - Node JS EC2

javascript - 浏览器何时执行缓存中的 JavaScript?

asp.net-mvc - Azure Blob - 上传时出现 403 - Sitecore CM/CD 拓扑

c# - MassTransit 3 与 Azure 服务总线创建队列

c# - 当图服务调用返回时,是否不能保证用户已添加到租户中?