什么是Data URI?

news/2024/11/28 9:43:51/文章来源:https://www.cnblogs.com/ai888/p/18571406

Data URI,全称为 Data Uniform Resource Identifier,是一种将小型数据文件直接嵌入到HTML、CSS或JavaScript等Web资源中的方案。它允许将数据编码为Base64字符串并包含在URI中,而不是引用外部文件。

基本语法:

data:[<mediatype>][;base64],<data>
  • data: 前缀,表示这是一个Data URI。
  • <mediatype> (可选) 指定数据的MIME类型,例如 image/pngtext/plainapplication/pdf 等。如果没有指定,则默认为 text/plain;charset=US-ASCII
  • ;base64 (可选) 表示数据使用Base64编码。如果不指定,则数据以纯文本形式存在,但仅限于ASCII字符,且某些字符需要进行URL编码。
  • <data> 实际的数据内容,如果是Base64编码,则为Base64编码后的字符串;否则为原始数据。

示例:

  • 显示一张小红点:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red Dot" />
  • 嵌入一段CSS样式:
<style>body {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==");}
</style>
  • 嵌入一段JavaScript代码:
<script>alert("Hello from Data URI!");
</script><a href="javascript:void(0)" onclick="eval(decodeURIComponent('alert(%22Hello%20from%20Data%20URI!%22)'))">Click me</a>

优点:

  • 减少HTTP请求: 将数据直接嵌入到文档中,减少了浏览器需要发出的HTTP请求数量,从而提高页面加载速度。
  • 方便快捷: 对于小型数据,使用Data URI可以避免创建单独的文件,简化开发流程。
  • 跨域问题: Data URI 不受跨域策略的限制。

缺点:

  • 数据大小限制: Base64编码会使数据体积增大约33%,并且浏览器对Data URI的长度也有一定的限制。因此,Data URI不适合大型文件。
  • 缓存问题: Data URI 嵌入在文档中,浏览器可能会缓存整个文档,即使只有Data URI中的数据发生了变化。
  • 可维护性: 对于较大的数据,直接嵌入到文档中会降低代码的可读性和可维护性。

总结:

Data URI 适用于嵌入小型数据,例如小图标、短文本等。对于大型文件或需要频繁更新的数据,仍然建议使用外部文件。 在使用Data URI时,需要权衡其优缺点,并根据实际情况进行选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/842101.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么去掉点击a链接或者图片出现的边框?

要去掉点击 a 链接或者图片出现的边框,你可以使用 CSS 的 outline 属性将其设置为 none。 以下几种方法可以实现: 1. 通用方法 (推荐): a, img {outline: none; }这个方法最简单直接,会移除所有 a 标签和 img 标签的 outline。 2. 更精确的控制 - 针对特定链接或图片: 如…

windows上安装npm

npm是nodejs下的包管理器,要使用npm命令就要下载nodejs 首先进入nodejs官网进行下载Node.js — Run JavaScript Everywhere (nodejs.org) 下载好后next,安装到想要的路径下一直next就行 这一步选择APP to PATH,默认添加配置 打开cmd 输入echo %path%,查看所有配置 看到node…

Prometheus告警带图完美解决方案

转载自:https://mp.weixin.qq.com/s/dDmZaJ66tdEScCJyansyJA 需求背景 告警分析处理流程 通常我们收到 Prometheus 告警事件通知后,往往都需要登录 Alertmanager 页面查看当前激活的告警,如果需要分析告警历史数据信息,还需要登录 Prometheus 页面的在 Alerts 中查询告警 p…

360评估如何自动剔除掉最高分和最低分?

在 360 度评估中,为了确保数据的真实性和有效性,我们可以采取一些控制评分结果的严谨措施。比如前几期中提到的 评价时的得分分布控制、提交评价后HR管理后台对极端评价结果一键打回功能等这些手段。 但有的时候我们就是希望不人为去干预太多,比如一键打回那种方式HR要付出不…

Dumphash: 绕过杀软dumphash 离线读取工具

免责声明 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!!项目介绍 Dumphash绕过国内全部杀软转存储 该工具无任何网络行为 编译完成后可以注释掉…

fsacn输出结果的图形化工具 - FscanParser

免责声明: 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!!项目介绍 一个用于处理fsacn输出结果的图形化工具(尤其面对大量资产的fscan扫描结果…

【架构】高性能排名系统的核心架构原理

简介 Booking.com 利用复杂的排名系统优化每位用户的搜索结果。该系统采用先进的机器学习算法,并充分利用海量数据,包括用户行为、偏好和历史交互记录,为用户量身定制酒店列表和旅行推荐。 本文将带您深入了解支撑多个垂直领域(如住宿、航班等)个性化排名的排名平台架构。…

【java开发】一文理清 Java 日志框架的来龙去脉

一、引言二、日志概念三、日志框架的作用四、日志框架的发展历程4.1 早期阶段(1996年以前)4.2 Log4j的诞生(1996年)4.3 JUL的推出(2002年)4.4 JCL的推出(2002年)4.5 SLF4J和Logback的创建(2006年)4.6 Log4j 2的推出(2012年)五、主流日志框架5.1 日志门面5.2 日志实…

dotnet 简单写一个 pdb 符号文件下载器

本文将告诉大家如何读取 PE 文件头信息,拼接 PDB 符号文件下载地址,从微软公共符号服务器拉取符号文件本文将以拉取 ntdll.dll 为例子告诉大家如何从 msdl.microsoft.com 下载符号 我先将自己电脑上的 ntdll.dll 拷贝到输出路径,方便我进行访问。读取 C 盘的 Windows 文件夹…

读数据质量管理:数据可靠性与数据质量问题解决之道16数据认证

数据认证1. 对数据进行认证 1.1. 数据认证是指在数据资产满足关于数据质量、可观测性、权责分配、问题解决和沟通等公司内共同遵守的SLA后,批准它们被用于整个组织的过程 1.2. 数据认证为人员、框架和技术构建了关键流程,使其与核心业务政策保持一致 1.3. 数据认证的要求会因…

FinalShell-Decoder:一款FinallShell密码解密的GUI工具

项目介绍 FinalShell-Decoder是一款FinallShell密码解密的GUI工具,目前使用 Maven 进行了重构,jdk11以上版本可自行打包,使用时记得添加环境变量 : java--module-path "%JDK_INSTALL_PATH%\javafx-sdk-11.0.2\lib" --add-modules javafx.controls,javafx.fxml -ja…

鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起

【效果】 元服务链接格式(API>=12适用):https://hoas.drcn.agconnect.link/ggMRM 生成二维码后效果:​ 【参考网址】 使用App Linking实现元服务跳转:https://developer.huawei.com/consumer/cn/doc/AppGallery-connect-Guides/agc-applinking-atomic-link-0000002046…