ホームページ ウェブフロントエンド jsチュートリアル HTML5 Web キャッシュとアプリケーション キャッシュ

HTML5 Web キャッシュとアプリケーション キャッシュ

Jan 13, 2018 am 11:13 AM
h5 html5 web

この記事では主に HTML5 の Web キャッシュとアプリケーション キャッシュ (Cookie、セッション) を紹介します。編集者が非常に優れていると考えたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

HTML5 Web キャッシュを紹介する前に、Cookie とセッションについて理解しましょう:

session:

HTTP はステートレスなので、あなたは誰ですか?あなたは何をしましたか?申し訳ありませんが、サーバーは知りません。

セッションが表示され、将来の使用に備えてユーザー情報 (ユーザー名、ショッピング カートでの購入など) がサーバーに保存されます。

ただし、セッションは一時的なものであり、ユーザーがウェブサイトを離れると削除されます。情報を永続的に保存したい場合は、データベースに保存できます。

セッションの仕組み: ユーザーごとにセッション ID (コア!!!) を作成します。セッション ID は Cookie に保存されます。つまり、ブラウザが Cookie を無効にすると、セッションは無効になります。 (ただし、URL を介してセッション ID を渡すなど、他の方法で実装することもできます)

ユーザー認証は通常、セッションを使用します。

Cookie:

目的: ユーザーを識別するために、Web サイトによってクライアント側にローカルに保存されるデータ (通常は暗号化されます)。

  1. ユーザーが Web ページにアクセスすると、名前が Cookie に記録されます。

  2. 次回ユーザーが Web ページにアクセスし続けると、ユーザーのアクセス記録が Cookie から読み取られるようになります。

Cookie は、同じオリジンからの http リクエストで (必要でない場合でも) 送信されます。つまり、クライアントとサーバーの間でやり取りされます。

クッキーのデータサイズは4kを超えません

クッキーの有効期間:設定したクッキーはブラウザを閉じても有効期限まで有効です!

localStorage と sessionStorage:

初期の頃、ローカル キャッシュには Cookie が一般的に使用されていましたが、Web ストレージはより安全で高速である必要があります。

これらのデータはサーバーには保存されず (クライアントに保存され)、サーバーのパフォーマンスには影響しません。

sessionStorage と localStorage データ ストレージにもサイズ制限がありますが、Cookie よりもはるかに大きく、5M 以上に達する可能性があります。

localStorage: 時間制限のないデータ ストレージ!

sessionStorage: 英語の意味からもわかるように、セッションのデータストレージなので、ユーザーがブラウザ(タブ/ウィンドウ)を閉じると、データは削除されます!

HTML5 Web ストレージのサポート:

IE8 以降、最新のブラウザー。

データはキーと値のペアで保存されます:

localStorage と sessionStorage には次のメソッドがあります:

  1. localStorage.setItem(key, value): localStorage.key=value!

  2. と同等のデータを設定 (保存)
  3. localStorage.getItem(key): データを取得する

  4. localStorage.removeItem(key): 単一のデータを削除する

  5. localStorage.clear(): すべてのデータを削除する

  6. localStorage.key(index): 取得する特定のインデックスのキー値


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>web storage</title>
</head>

<body>
    <p id="test"></p>
    <script>
        if (typeof (Storage) != undefined) {
            localStorage.name = &#39;xiao ming&#39;;
            localStorage.setItem(&#39;name1&#39;, &#39;Apple&#39;);
            document.getElementById(&#39;test&#39;).innerHTML = "you are: " + localStorage.name;
            console.log("first:" + localStorage.name1 + "," + localStorage.key(0));
            localStorage.removeItem(&#39;name1&#39;);
            console.log("second: " + localStorage.name1);
            console.log("third: " + localStorage.getItem(&#39;name&#39;));
            localStorage.clear();
            console.log("last:" + localStorage.name);
        } else {
            document.getElementById(&#39;test&#39;).innerHTML = "更新浏览器吧!目前浏览器不支持stroage";
        }
        
    </script>
</body>
</html>
ログイン後にコピー

プログラムの実行結果:

注: キーと値のペアは文字列として保存され、必要に応じて型を変更する必要があります (たとえば、加算を行うには、数値型に変更します)。

HTML5 アプリケーション キャッシュ:

キャッシュ マニフェスト ファイルを作成することで、Web アプリケーションをキャッシュし、ネットワークの状態に関係なくアクセスできるようになります。

アプリケーション キャッシュの利点:

1. オフライン ブラウジングの高速化: キャッシュされたリソースの読み込みが高速化されます。


サポート ステータス:

IE10 以降、最新のブラウザ。

使用:

<!DOCTYPE html>
<html manifest="demo.appcache">
</html>
ログイン後にコピー

注: アプリケーション キャッシュを有効にするには、マニフェスト属性 (拡張子: .appcache) を指定する必要があります。マニフェスト属性が指定されていない場合、ページはキャッシュされません。マニフェスト ファイルで直接指定されています!)

マニフェスト ファイルは、サーバー上で MIME タイプ: text/cache-manifest で正しく構成されている必要があります。

マニフェスト ファイル:

マニフェストは、何がキャッシュされ、何がキャッシュされていないかをブラウザーに伝える単純なテキスト ファイルです。

マニフェストは 3 つの部分に分けることができます:

キャッシュマニフェスト: この項目にリストされているファイルは、最初のダウンロード後にキャッシュされます。

ネットワーク: この項目にリストされているファイルはサーバーとのネットワーク接続を必要とするため、キャッシュされません。

FALLBACK: この項目には、ページにアクセスできない場合のフォールバック ページ (404 ページなど) がリストされます。

test.appcache:

CACHE MANIFEST
#2017 11 21 v10.0.1
/test.css
/logo.gif
/main.js

NETWORK
/login.php
/register.php

FALLBACK
#/html/目录中文件无法访问时,用/offline.html替代
/html/ /offline.html
ログイン後にコピー


アプリケーションのキャッシュを更新します:

1. ユーザーがブラウザのキャッシュをクリアします。 2. マニフェスト ファイルが変更されます (#: はコメントを示し、#2018 1 1 v20.0.0 に変更されると、ブラウザーが再キャッシュされます!) 3. プログラムがアプリケーション キャッシュを更新します。 Web ワーカー:


Web ワーカーは、他のスクリプトから独立してバックグラウンドで実行される JavaScript であり、ページのパフォーマンスには影響しません。

一般的な HTML ページでスクリプトを実行する場合、スクリプトが読み込まれない限りページは応答しません。

支持情况:IE10以上,现代浏览器

示例:html文件:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>web worker</title>
</head>
<body>
    <p>计数:<output id="count"></output></p>
    <button onclick="startWorker()">开始</button>
    <button onclick="overWorker()">结束</button>

    <script>
        var w;
        function startWorker(){
            // 检测浏览器是否支持web worker
            if(typeof(Worker)!==&#39;undefined&#39;){
                if(typeof(w)==&#39;undefined&#39;){
                    //创建web worker对象
                    w=new Worker(&#39;testWorker.js&#39;);
                }
                // 事件持续监听(即使外部脚本已经完成),除非被终止
                w.onmessage=function(event){
                    document.getElementById(&#39;count&#39;).innerHTML=event.data;
                };
            }else{
                document.getElementById(&#39;count&#39;).innerHTML=&#39;浏览器不支持web worker&#39;;
            }
        }
        function overWorker() {
            // 终止web worker对象,释放浏览器/计算机资源
            w.terminate();
            w=undefined;
        }
    </script>
</body>
</html>
ログイン後にコピー

testWorker.js文件:


var i=0;
function timedCount() {
    i+=1;
    // 重要的部分,向html页面传回一段信息
    postMessage(i);
    setTimeout(&#39;timedCount()&#39;,500);
}
timedCount();
ログイン後にコピー

注意1:通常web worker不是用于如此简单的任务,而是用在更耗CPU资源的任务!

注意2:在chrome中运行会产生“cannot be accessed from origin 'null'”的错误,我的解决方法是:xampp中开启apache,用http://localhost/进行访问。

web worker缺点:

由于web worker位于外部文件中,所以它无法访问下列javascript对象:

  1. window对象;

  2. document对象;

  3. parent对象。

HTML5 server-sent events(服务器发送事件):

server-sent事件是单向信息传递;网页可以自动获取来自服务器的更新!

以前:网页先询问是否有可用的更新,服务器发送数据,进行更新(双向数据传递)!

支持情况:除IE以外的现代浏览器均支持!

示例代码:html文件:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>sever sent event</title>
</head>
<body>
    <p>sever sent event informations</p>
    <p id="test"></p>
    <script>
        // 判断浏览器是否支持EventSource
        if(typeof(EventSource)!==undefined){
            // 创建EventSource对象
            var source=new EventSource("test.php");
            // 事件监听
            source.onmessage=function(event){
                document.getElementById(&#39;test&#39;).innerHTML+=event.data+"<br>";
            };
        }else{
            document.getElementById(&#39;test&#39;).innerHTML="sorry,浏览器不支持server sent event";
        }
    </script>
</body>
</html>
ログイン後にコピー

test.php:


<?php
header(&#39;Content-Type:text/event-stream&#39;);
header(&#39;Cache-Control:no-cache&#39;);

$time=date(&#39;r&#39;);
echo "data:The server time is: {$time} \n\n";
// 刷新输出数据
flush();
ログイン後にコピー

注意:后面没有内容,php文件可以不用"?>"关闭!

HTML5 WebSocket:

  1. WebSocket是HTML5提供的一种在单个TCP连接上建立全双工(类似电话)通讯的协议;

  2. 浏览器和服务器之间只需要进行一次握手的操作,浏览器和服务器之间就形成了一条快速通道,两者之间就可直接进行数据传送;

  3. 浏览器通过javascript建立WebSocket连接请求,通过send()向服务器发送数据,onmessage()接收服务器返回的数据。

 WebSocket如何兼容低浏览器:

  1. Adobe Flash Socket;

  2. ActiveX HTMLFile(IE);

  3. 基于multipart编码发送XHR;

  4. 基于长轮询的XHR

WebSocket可以用在多个标签页之间的通信!

相关推荐:

Nginx的Web缓存服务与新浪网的开源NCACHE模块

Web缓存杂谈_html/css_WEB-ITnose

基于反向代理的Web缓存加速可缓存的CMS系统设计_PHP

以上がHTML5 Web キャッシュとアプリケーション キャッシュの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

See all articles