搜尋
首頁web前端html教學Data URI和MHTML完整解決所有瀏覽器_HTML/Xhtml_網頁製作

Data URI

Data URI 是由 RFC 2397 定義的一種把小文件直接嵌入文件的方案。透過以下語法就可以把小檔案變成指定編碼直接嵌入頁面中:

data:[][;base64],

  1. MIME-type:指定嵌入資料的 MIME。其形式是[type]/[subtype]; parameter,例如png圖片對應的MIME是image/png。 parameter可以用來指定附加的信息,更多情況下是用於指定text/plain和text/htm等的文字編碼方式的charset參數。預設是text/plain;charset=US-ASCII。
  2. base64:聲明後面的資料的編碼是base64的,否則資料必須要用百分號編碼(即對內容進行urlencode)。

在上個世紀HTML4.01引入了Data URI方案 ,到今天為止除了IE6和IE7之外,所有主流瀏覽器都支援,但IE8 Data URI的支援還是有限制的,只支援object(僅是圖片時)、img、input type=image、link和CSS中的URL,且資料量不能大於32K。

優點:

  1. 減少HTTP請求數,沒有了TCP連線消耗和同一網域下瀏覽器的並發數限制。
  2. 對於小檔案會降低頻寬。雖然編碼後資料量會增加,但卻減少了http頭,當http頭的資料量大於檔案編碼的增量,那麼就會降低頻寬。
  3. 對於HTTPS站點,HTTPS和HTTP混用會有安全提示,而HTTPS相對於HTTP來講開銷要大更多,所以Data URI在這方面的優勢更明顯。
  4. 可以把整個多媒體頁面儲存為一個檔案。

缺點

  1. 無法重複利用,同一個文件應用多次同一個內容,則需要重複多次,資料量大量增加,增加了下載時間。
  2. 無法被獨自緩存,所以其包含文件重新載入時,它也要重新載入。
  3. 客戶端需要重新解碼和顯示,增加了點消耗。
  4. 不支援資料壓縮,base64編碼會增加1/3大小,而urlencode後資料量會增加更多。
  5. 不利於安全軟體的過濾,同時也存在一定的安全隱患。

MHTML

MHTML是MIME HTML (Multipurpose Internet Mail Extension HTML)的縮寫,是由RFC 2557定義的把一個多媒體的頁面所有內容都保存到同一個文件解決方案。這個方案是由微軟提出從IE5.0開始支持,另外Opera9.0也開始支持,Safari可以把文件保存為.mht(MHTML文件的後綴)格式,但不支持顯示它。

MHTML和Data URI也比較類似,有更強大的功能和更複雜的語法,並且沒有Data URI中「無法重複利用」的缺點,但MHTML使用起來不夠靈活方便,例如對資源引用的URL在mht檔案中可以是相對位址,否則必須是絕對位址。 hedger在《Cross Browser Base64 Encoded Images Embedded in HTML》針對IE的解決方案使用的是相對路徑就是因為聲明了Content-type:message/rfc822使IE按照MHTML來解析,如果不修改Content -type則需要使用MHTML協議,這個時候必須使用絕對路徑,如《MHTML – when you need data: URIs in IE7 and under》

應用

Data URI和MHTML兩者的配合可以完整的解決所有的主流瀏覽器,它們由於無法被緩存和重複利用的缺陷,所以並不適合直接在頁面中使用,但在CSS和JavaScript文件中對圖片適當地使用有非常大的優越性:

  1. 大幅減少請求數,現在大型網站的CSS引用了大量的圖片資源。
  2. CSS和JavaScript都可以被緩存,間接的實作了資料的快取。
  3. 利用CSS可以解決Data URI的重複利用問題
  4. 告別CSS Sprites,CSS Sprites的出現是為了減少請求數,但它除了帶來在不確定情況下的異常外,CSS Sprites還需要人為的圖片合併,即使有合併工具也依舊必須人為地在如何有效的拼圖上耗費大量的時間,並帶來維護的困難。當你遵循一定的設計原則後,你就可以完全拋棄CSS Sprites來編寫CSS,最後使用工具在上傳到伺服器環節把圖片轉換成Data URI和MHTML,如《利用data-uri合併樣式表和圖片》中用python實現的工具,這可以節省大量的時間。
  5. base64編碼把圖片檔案增加了1/3,Data URI和MHTML同時使用相當於增加了2/3,但CSS和JavaScript可以使用gzip壓縮,其可以節省2/3的資料量,所以使用gzip壓縮後的最終資料量是(1 1/3) * 2 * (1/3) = 8/9,所以最終流量是減少的。

為了方便在CSS中實作Data URI和MHTML,我寫了一個Data URI & MHTML 生成器,你可以看利用其產生Data URI & MHTML應用程式實例

在CSS檔案中使用應用MHTML時URL必須使用絕對路徑,導致非常不靈活,所以可以考慮使用CSS expression來解決(DEMO),例如:

   /*
   http://old9.blogsome.com/2008/10/26/css-expression-reloaded/
   http://dancewithnet.com/2009/07/27/ get-right-url-from-html/
   */
  *background-image:expression(function(ele){
    ele.style.backgroundImage = 'url(mhtml:'          '!03114501408821761.gif)';
  }(this)) 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
nginx location中uri的截取如何实现nginx location中uri的截取如何实现May 18, 2023 pm 12:07 PM

说明:location中的root和aliasroot指令只是将搜索的根设置为root设定的目录,即不会截断uri,而是使用原始uri跳转该目录下查找文件aias指令则会截断匹配的uri,然后使用alias设定的路径加上剩余的uri作为子路径进行查找location中的proxy_pass的uri如果proxy_pass的url不带uri如果尾部是"/",则会截断匹配的uri如果尾部不是"/",则不会截断匹配的uri如果proxy_pass的url带uri

data文件夹里面是什么数据data文件夹里面是什么数据May 05, 2023 pm 04:30 PM

data文件夹里面是系统及程序的数据,比如软件的设置和安装包等,Data文件夹中各个文件夹则代表的是不同类型的数据存放文件夹,无论Data文件指的是文件名Data还是扩展名data,都是系统或程序自定义的数据文件,Data是数据保存的备份类文件,一般可以用meidaplayer、记事本或word打开。

Nginx Location指令URI匹配规则是什么Nginx Location指令URI匹配规则是什么May 14, 2023 pm 11:58 PM

1、介绍location指令是http模块当中最核心的一项配置,根据预先定义的url匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器、非法的请求直接拒绝并返回403、404、500错误处理等。2、location指令语法location[=|~|~*|^~|@]/uri/{…}或location@name{…}3、uri匹配模式location指令分为两种匹配模式:1>普通字符串匹配:以=开头或开头无引导字符(~)的规则2>正则匹配:以~或~*开头表示正则匹配,~*

mysql load data乱码怎么办mysql load data乱码怎么办Feb 16, 2023 am 10:37 AM

mysql load data乱码的解决办法:1、找到出现乱码的SQL语句;2、修改语句为“LOAD DATA LOCAL INFILE "employee.txt" INTO TABLE EMPLOYEE character set utf8;”即可。

URL和URI之间有什么区别URL和URI之间有什么区别Aug 10, 2023 pm 05:15 PM

URL和URI之间的区别是:1、URI是用于标识互联网上的资源的字符串序列,而URI并不关注资源的位置,而只关注它的标识符;2、URL提供了关于资源在互联网上位置的详细信息,而URI是一种更广义的概念,不仅涵盖了URL,还包括了用于标识资源的其他形式,如URN;3、URL是URI的一种特殊类型,用于定位互联网上的资源,而URI则是一种更广义的标识符,用于唯一地标识和命名资源。

xdata和data有哪些区别xdata和data有哪些区别Dec 11, 2023 am 11:30 AM

区别有:1、xdata通常指的是自变量,data则是指整个数据集;2、xdata主要用于建立数据分析模型,data则是用于进行数据分析和统计;3、xdata通常用于回归分析、方差分析、预测建模,data则可以使用各种统计方法进行分析;4、xdata通常需要进行数据预处理,data则可以包含完整的原始数据。

AI project failure rates top 80% — study cites poor problem recognition and a focus on latest tech trends among major problemsAI project failure rates top 80% — study cites poor problem recognition and a focus on latest tech trends among major problemsAug 31, 2024 am 12:59 AM

Everyone and their aunt seem to be hopping aboard the AI train in search of inflated profit margins and marketing hype — just look at AMD's recent Ryzen rebrand as a prime example of this AI hype. A recent study conducted by RAND has found that this

MySQL 狂写错误日志MySQL 狂写错误日志Feb 18, 2024 pm 05:00 PM

一台核心业务数据库,版本为MySQL8.34社区服务器版。从上线以来,这个数据库服务器的错误日志增增加非常迅猛(如下图所示),每24小时能增加到10多个G的容量。因为有故障报警,也还没有影响到业务的正常访问,有关人员不让重启MySQL服务。鉴于这个情况,我只好设置一个自动计划任务,在每晚的夜间定点清理这些日志。具体的操作时候在系统命令行,执行“crontab-e”,添加如下的文本行:0001***echo>/data/mysql8/data/mysql_db/mysql.log保存并退出编辑模式

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器