この記事は主に HTML5 保存方法の概要を共有するものであり、HTML5 開発者に役立ち、誰もが HTML5 保存方法をよりよく習得できることを願っています。
Cookieは急激に増加します
ローカルストレージlocalstorage
セッションストレージ
オフラインキャッシュ(アプリケーションキャッシュ)
Web SQL
-
IndexedDB
Cookie の野蛮な増加
HTML5
が出現する前は、野蛮な時代の野蛮な成長と同じように、Cookie
がクライアント ストレージの世界全体を占めていました。実際のアプリケーションのニーズを適切かつ迅速に解決します。しかし、その問題も明らかです。cookie
はリクエスト ヘッダーにデータを運びます。また、サイズは 4K に制限されています。これは非常に安全ではなく、外部から簡単に傍受されます。 >ドメイン汚染。 HTML5
出现之前,Cookies
便占据了客户端存储的整个江山,就像是蛮荒时代的野蛮生长,cookies
很好、快速地满足实际应用的需求。但是它的问题也很明显,cookies
会在请求头上带着数据,而且大小限制在4K以内,这是非常不安全的,容易被外部截取,还存在domain
污染。
IE
浏览器特别喜欢搞自己的一套,对于增加存储容量加入了UserData
,大小是64K
,但是其他浏览器不喜欢跟它玩,也就只有它自己一家支持。
那么,重点来了。既然cookies
问题那么多,就要想办法解决,不然没法继续往前发展。首先要确认它的问题有哪些,然后根据这些问题寻找解决方案。
解决
4K
存储容量问题解决请求头带有存储信息的问题,也就是增加安全性,通过加密通道或方式进行数据存储和传输
解决关系型存储的问题
跨浏览器
本地存储localstorage
存储方式
以键值对(key-value)的方式存储,永久存储,永不失效,除非手动删除。
存储容量
每个域名5M
。
常用的API
getItem
//取记录
setItem
//设置记录
removeItem
//移除记录
key
//取key
所对应的值
clear
//清除记录
本地存储sessionstorage
HTML5
的本地存储API
中的localstorage
与sessionstorage
在使用方法上是相同的,区别在于sessionstorage
在关闭页面后即被清空,而localstorage
则会一直保存,除非手动删除。
离线缓存(application cache)
本地缓存应用所需的文件
使用方法
1、配置manifest
文件
页面上:
nbsp;HTML> ...
manifest
文件:
manifest
是最简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。
manifest
文件分为三个部分:
CACHE MANIFEST
-在此标题下列出的文件将在首次下载后进行缓存NETWOrK
-在此标题下的文件需要与服务器进行连接,且不会被缓存FALLBACK
-在此标题下的文件规定当页面无法被访问时的回退页面(比如404
页面)
完整demo
CACHE MANIFEST # 2016-07-24 v1.0.0 /theme.css /main.js NETWORK: login.jsp FALLBACK: /html/ /offline.html
服务器上:manifest
文件需要配置正确的MIME-type
,即text/cache-manifest
。
常用API
核心是applicationCache
对象,有个status
属性,表示应用缓存的当前状态:
0 (UNCACHED)
:无缓存,没有和页面相关的应用缓存
1 (IDLE)
:闲置,应用缓存没有得到更新
2 (CHECKING)
:检查中,正在下载描述文件并检查更新
3 (DOWNLOADING)
:下载中,应用缓存正在下载与描述文件中指定的资源
4 (UPDATEREADY)
:更新完成,所有资源都已经下载完毕
5 (IDLE)
:废弃,应用缓存的描述文件已经不存在了,因此页面无法再访问应用缓存
相关事件
表示应用缓存状态的改变:
checking
:在浏览器为应用缓存查找更新时触发
error
:在检查更新或下载资源期间发生错误时触发
noupdate
:在检查描述文件发现文件无变化时触发
downloading
:在开始下载应用缓存资源时触发
progress
:在文件下载应用缓存的过程中持续不断地下载时触发
updateready
:在页面新的应用缓存下载完毕时触发
cached
:在应用缓存完整可用时触发
application cache
IE
ブラウザは特に独自のスタイルを作成することを好み、ストレージ容量を増やすために UserData
が追加されますが、他のブラウザではサイズが 64K
になります。あなたがそれで遊ぶのが好きではない場合、それはあなたをサポートするだけです。
cookie
には非常に多くの問題があるため、それらを解決する方法を見つけなければ、先に進むことができません。まず問題を特定し、次にそれらの問題に基づいて解決策を見つけます。 🎜- 🎜🎜
4K
ストレージ容量の問題を解決します🎜🎜🎜🎜 ストレージ情報を含むリクエスト ヘッダーの問題を解決します。つまり、暗号化されたチャネルを通じてセキュリティを強化しますまたはデータの保存と送信の方法🎜🎜🎜🎜リレーショナルストレージの問題の解決🎜🎜🎜🎜クロスブラウザ🎜🎜5M
。 🎜🎜よく使われる API 🎜🎜🎜getItem
// レコードを取得 🎜🎜setItem
// レコードを設定 🎜🎜removeItem
// 移動レコードを削除します🎜🎜key
//key
に対応する値を取得します🎜🎜clear
//レコードをクリアします🎜🎜ローカルストレージセッションストレージ🎜🎜HTML5 のローカルストレージ API
の localstorage
と sessionstorage
の使用方法は同じですが、違いは sessionstorage はページを閉じるとクリアされますが、localstorage
は手動で削除しない限り常に保存されます。 🎜🎜オフライン キャッシュ (アプリケーション キャッシュ) 🎜🎜 アプリケーションに必要なローカル キャッシュ ファイル 🎜🎜使用方法 🎜🎜🎜1. manifest
ファイルを設定します 🎜🎜 ページで: 🎜var db = openDatabase('mydb', '1.0', 'TEST DB', 2 * 1024 * 1024, fn);🎜
manifest
ファイル: 🎜🎜🎜manifest
は、何がキャッシュされているか (何がキャッシュされていないのか) をブラウザに伝える最も単純なテキスト ファイルです。 🎜🎜マニフェスト
ファイルは 3 つの部分に分かれています: 🎜🎜🎜🎜🎜CACHE MANIFEST
- この見出しの下にリストされているファイルは、最初のダウンロード後にキャッシュされます 🎜 🎜🎜 🎜NETWOrK
- このタイトルのファイルはサーバーへの接続が必要であり、キャッシュされません🎜🎜🎜🎜FALLBACK
- このタイトルのファイルには、フォールバック ページが必要です。ページにアクセスできません (404
ページなど) 🎜🎜🎜🎜完全な demo
🎜🎜var db = openDatabase('mydb', '1.0', 'TEST DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)'); })🎜サーバー上: 🎜
manifest
ファイルは、正しい MIME タイプ
、つまり text/cache-manifest
で構成する必要があります。 🎜🎜一般的に使用される API
🎜🎜🎜 コアは applicationCache
オブジェクトで、このオブジェクトには status
属性があり、現在のステータスを示します。アプリケーション キャッシュ: 🎜🎜 0 (UNCACHED)
: キャッシュなし、ページに関連するアプリケーション キャッシュはありません🎜🎜1 (IDLE)
: アイドル、アプリケーション キャッシュはあります更新されていません🎜🎜2 (CHECKING)
: 説明ファイルを確認、ダウンロードし、更新を確認しています🎜🎜3 (DOWNLOADING)
: ダウンロード中、アプリケーション キャッシュがリソースをダウンロードしています説明ファイルで指定されています🎜🎜 4 (UPDATEREADY)
: 更新が完了し、すべてのリソースがダウンロードされました🎜🎜5 (IDLE)
: 放棄されました、アプリケーションキャッシュ記述ファイルはもう存在しないため、ページはアプリケーション キャッシュにアクセスできなくなります。 🎜🎜関連イベント 🎜🎜🎜 は、アプリケーション キャッシュの状態の変化を表します: 🎜🎜checking
: ブラウザが更新を探すときにトリガーされます。アプリケーション キャッシュへの書き込み🎜🎜error
: 更新の確認またはリソースのダウンロード中にエラーが発生したときにトリガーされます🎜🎜noupdate
: 説明ファイルをチェックし、ファイルに変更なし🎜🎜downloading
: アプリケーション キャッシュ リソースのダウンロードを開始するとき トリガー🎜🎜progress
: ファイル ダウンロード アプリケーション キャッシュのダウンロードが継続するとトリガーされます🎜🎜updateready code>: ページ上の新しいアプリケーション キャッシュがダウンロードされたときにトリガーされます🎜🎜cached
: アプリケーション キャッシュが完全に利用可能になったときにトリガーされます 🎜🎜アプリケーション キャッシュ
の 3 つの利点>: 🎜🎜离线浏览
提升页面载入速度
降低服务器压力
注意事项:
浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点
5M
)如果是
manifest
文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用旧的缓存引用
manifest
的html
必须与manifest
文件同源,在同一个域下浏览器会自动缓存引用
manifest
文件的html
文件,这就导致了如果更改了html
内容,也需要更新版本才能做到最新manifest
文件中的CACHE
与NETWOrK
、FALLBACK
的位置顺序没有关系,如果是隐式声明需要在最前面FALLBACK
中的资源必须和manifest
文件同源更新完版本后,必须刷新一次才会启动新版本(会出现重刷一次页面的情况),需要添加监听版本事件
站点中的其他页面即使没有设置
manifest
属性,请求的资源如果在缓存中也从缓存中访问当
manifest
文件发生改变时,资源请求本身也会触发更新
离线缓存和传统浏览器缓存的区别
离线缓存是针对整个应用,浏览器缓存是单个文件
离线缓存可以主动通知浏览器更新资源
Web SQL
Web SQL
数据库API
并不是HTML5
规范的一部分,但它是一个独立的规范,引入了一组使用SQL
操作客户端数据库的APIs
。
核心方法
openDatabase
:使用现有的数据库或新建的数据库创建一个数据库对象transaction
: 控制一个事务,以及基于这种情况执行提交或回滚executeSql
:用于执行实际的SQL
查询
打开数据库
var db = openDatabase('mydb', '1.0', 'TEST DB', 2 * 1024 * 1024, fn);
执行查询操作
var db = openDatabase('mydb', '1.0', 'TEST DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)'); })
插入数据
注:博客主题里的代码块样式
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)'); tx.executeSql('INSERT INTO WIN (id, name) VALUES (1, "winty")'); tx.executeSql('INSERT INTO WIN (id, name) VALUES (2, "LuckyWinty")'); });
注:需要实现的代码块样式,这个是 markdowpad2 里的操作,也是很多markdown写作工具提供的操作,只需要按一下 tab 键,非常方便
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS WIN (id unique, name)'); tx.executeSql('INSERT INTO WIN (id, name) VALUES (1, "winty")'); tx.executeSql('INSERT INTO WIN (id, name) VALUES (2, "LuckyWinty")'); });
读取数据
db.transaction(function (tx) { tx.executeSql('SELECT * FROM WIN', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查询记录条数: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i <h2 id="IndexedDB">IndexedDB</h2><p>索引数据库(<code>IndexedDB</code>)<code>API</code>(作为<code>HTML5</code>的一部分)对创建具有丰富本地存储数据的数据密集型的离线<code>HTML5 Web</code>应用程序很有用,同时它还有助于本地缓存数据,使传统在线<code>Web</code>应用程序(比如移动<code>Web</code>应用程序)能够快速的运行和响应。</p><p><strong>异步<code>API</code></strong></p><p>在<code>IndexedDB</code>大部分操作并不是我们常用的调用方法(返回结果的模式),而是(请求-响应模式),比如打开数据库的操作。</p><p>相关推荐:</p><p><a href="http://www.php.cn/html5-tutorial-361331.html" target="_self">前端HTML5几种存储方式的总结</a></p><p><a href="http://www.php.cn/js-tutorial-340047.html" target="_self">JavaScript中变量的存储方式</a></p><p><a href="http://www.php.cn/php-weizijiaocheng-302975.html" target="_self">在PHP中自定义session的存储方式_PHP教程</a></p><p class="comments-box-content"><br></p>
以上がHTML5の保存方法のまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

html5的div元素默认一行不可以放两个。div是一个块级元素,一个元素会独占一行,两个div默认无法在同一行显示;但可以通过给div元素添加“display:inline;”样式,将其转为行内元素,就可以实现多个div在同一行显示了。

html5中列表和表格的区别:1、表格主要是用于显示数据的,而列表主要是用于给数据进行布局;2、表格是使用table标签配合tr、td、th等标签进行定义的,列表是利用li标签配合ol、ul等标签进行定义的。

固定方法:1、使用header标签定义文档头部内容,并添加“position:fixed;top:0;”样式让其固定不动;2、使用footer标签定义尾部内容,并添加“position: fixed;bottom: 0;”样式让其固定不动。

HTML5中画布标签是“<canvas>”。canvas标签用于图形的绘制,它只是一个矩形的图形容器,绘制图形必须通过脚本(通常是JavaScript)来完成;开发者可利用多种js方法来在canvas中绘制路径、盒、圆、字符以及添加图像等。

html5中不支持的标签有:1、acronym,用于定义首字母缩写,可用abbr替代;2、basefont,可利用css样式替代;3、applet,可用object替代;4、dir,定义目录列表,可用ul替代;5、big,定义大号文本等等。

html5废弃了dir列表标签。dir标签被用来定义目录列表,一般和li标签配合使用,在dir标签对中通过li标签来设置列表项,语法“<dir><li>列表项值</li>...</dir>”。HTML5已经不支持dir,可使用ul标签取代。

html5是指超文本标记语言(HTML)的第五次重大修改,即第5代HTML。HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技术处理将其转换成为了可识别的信息。HTML5由不同的技术构成,其在互联网中得到了非常广泛的应用,提供更多增强网络应用的标准机。

3种取消方法:1、给td元素添加“border:none”无边框样式即可,语法“td{border:none}”。2、给td元素添加“border:0”样式,语法“td{border:0;}”,将td边框的宽度设置为0即可。3、给td元素添加“border:transparent”样式,语法“td{border:transparent;}”,将td边框的颜色设置为透明即可。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック









