HTML5 Canvas 从浏览器缓存加载图像

亚历杭德罗·康帕

每次使用 HTML5 Canvas 时,我都遇到过这个问题:我上传了一张图片,使用以下代码将其绘制到画布中:

canv = document.getElementById("gc");
canv.width = window.innerWidth;
canv.height = window.innerHeight;
centerX = canv.width / 2;
centerY = canv.height / 2;
ctx = canv.getContext("2d");

image= new Image;
image.src = "images/test.png";
image.onload = function() {
    setInterval(game, 1000 / 500);
};

一切正常,间隔调用一个在画布周围移动图像的函数,控制台日志或任何内容都没有错误。

问题是,当我更改(更新)服务器上的文件“test.png”时,画布会显示该文件的先前版本,直到我使用 chrome 的清除缓存工具为止。我认为图像会在执行时加载,每次都会加载图像,但似乎没有。

如何修复它以使其加载实际的图像文件?

帕特里克·罗伯茨

您可以尝试添加一个 nonce like image.src = "test.png?cache=" + Date.now(),但更好的方法是Cache-Control: no-cache使用XMLHttpRequest发送带有标头的请求fetch

使用伪随机查询字符串的“缓存破坏”之所以不好,是因为它实际上并没有按照名称所暗示的那样做。取而代之的是,它用几个冗余资源来混淆浏览器的缓存,每个资源都有自己独特的查询字符串。这会浪费您的磁盘空间(以及 SSD 的生命周期),因为您再也不想使用缓存的资源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从URL加载图像并绘制到HTML5 Canvas

如何检查我的浏览器是否支持HTML5 Canvas混合模式?

使用HTML5 / Canvas / JavaScript拍摄浏览器内屏幕截图

手机浏览器中的html5 canvas支持

Webkit浏览器<535(Android native / ios5 Safari)HTML5 Canvas单击错误

html5 canvas; 旋转的图像在即闪烁

HTML5 Canvas:更改图像颜色

使用canvas html5为图像绘制线条轮廓

HTML5 Canvas中的图像单击事件

HTML5 Canvas:向不断绘制的图像添加碰撞

HTML5如何在Canvas中调用图像

从文件将图像添加到HTML5 Canvas

Angular $ templateCache与HTML5浏览器缓存

跨浏览器在HTML5 Canvas上放置文本不一致

如何将图像从url沿着侧面输入类型文件加载到html5 canvas?

仅在加载后显示HTML5 Canvas中的数百个微小图像

HTML5 canvas javascript

如何使反应阻止浏览器缓存外部加载的html?

将背景图像添加到HTML5 Canvas微调器

浏览器缓存 HTML

防止RAP中drawImage的HTML5 canvas标签的磁盘缓存

HTML5 Canvas:更改图像时在图像上绘制的文本停止显示

使用 drawImage 函数未显示 HTML5 Canvas(多个图像)的图像

如何在Canvas上从HTML5 File API绘制图像?

为什么不能在HTML5 Canvas中绘制图像阵列?

通过翻译与剪切来平移图像的HTML5 Canvas效率

在已经有图像的画布上添加水印-HTML5,Canvas

裁剪HTML5 Canvas / JavaScript后,如何从图像中删除透明空白?

通过HTML5 Canvas Context缩放并在给定图像上绘制网格