【发布时间】:2020-03-10 16:00:39
【问题描述】:
我正在寻找一种方法来确保浏览器缓存无效/损坏的“图像”,以便在重新获取时立即加载。
以下是我特别感兴趣的两个场景。
1) 第一个是我尝试从包含不同类型资源的 url 加载图像(例如,在本例中为 text/html)。请求状态为200,但资源不是图片。
2) 第二个是我尝试加载根本不存在的图像。请求状态为404。
// takes ~500ms to load
const urlText = "https://goodreads.com"
const brokenTextImage = new Image();
brokenTextImage.src = urlText;
// takes ~500ms to load
const url404 = "https://broken.com/${gres.psm}.png"
const broken404Image = new Image();
broken404Image.src = url404;
// looking to cache - should take ~0ms to load
const cachedTextImage = new Image();
cachedBrokenTextImage.src = urlText;
// looking to cache - should take ~0ms to load
const cached404Image = new Image();
cached404Image.src = url404;
在这两种情况下,我都希望将加载时间减少到 ~0 毫秒,就像您对有效图像 url 的缓存机制所期望的那样。这可能吗?
请参阅此处的图片以获取此失败缓存的示例。您可以看到 404 图像的获取次数,以及 goodreads“图像”以及来自“磁盘缓存”的成功图像示例
图像响应时间:
【问题讨论】:
-
我不确定您要在这里做什么。如果问题是“我如何缓存我的 404 图像”,就像缓存所有其他图像一样。
-
@RobertHarvey 我希望浏览器能够自动缓存资源,就像有效的图像 url 一样,但事实并非如此。我会在 OP 中添加一张图片来澄清
-
哦,所以你要缓存一个不存在的资源?我不确定有没有办法做到这一点。您必须前往服务器才能识别 404。
-
我认为大部分时间来自处理请求的服务器。将服务器升级到 http/2 并使用服务器推送
标签: javascript html