数据 URI
数据 URI (Data URI scheme) 将图像或文件的二进制数据以 Base64 编码嵌入 URI 字符串中,格式为 data:image/png;base64,iVBORw0KGgo...。它不是引用外部文件,而是将数据本身包含在 URI 中。这种方式在 Web 应用中显示二维码时有特定优势。
将二维码图像生成为数据 URI 有几个好处。第一,无需外部文件 - HTML 的 <img src="data:image/svg+xml;base64,..."> 标签可以在不上传图像文件到服务器的情况下显示二维码。第二,减少 HTTP 请求,因为不需要额外请求图像文件,从而加快页面加载速度。第三,邮件嵌入更容易,因为某些屏蔽外部图像的邮件客户端仍然可以显示内联的数据 URI 图像。
主要缺点是 Base64 编码会使数据大小增加约 33%。一个作为文件时 3 KB 的二维码图像,嵌入 HTML 后变为约 4 KB 的数据 URI。对于小型二维码(几 KB 以下),这个开销可以忽略不计。但对于更大或更高分辨率的二维码图像,HTML 文档会变得臃肿,而且浏览器缓存无法单独应用于图像数据。
实际应用中,数据 URI 最适合每次页面访问都唯一的动态生成二维码 - 例如会话特定的认证码或一次性支付码。对于出现在多个页面上的静态二维码,带有适当缓存头的常规文件引用更高效。SVG 格式的数据 URI 对二维码特别有用,因为 SVG 压缩效果好且缩放不会损失质量。