<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • HTML5中Web緩存和運(yùn)用程序緩存的示例分析-創(chuàng)新互聯(lián)

            這篇文章主要為大家展示了“HTML5中Web緩存和運(yùn)用程序緩存的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HTML5中Web緩存和運(yùn)用程序緩存的示例分析”這篇文章吧。

            創(chuàng)新互聯(lián)建站專(zhuān)注于網(wǎng)站建設(shè)|網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋成都PE包裝袋等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷(xiāo)售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開(kāi)發(fā)品質(zhì)網(wǎng)站。

            session:

            由于HTTP是無(wú)狀態(tài)的,你是誰(shuí)?你干了什么?抱歉服務(wù)器都是不知道的。

            因此session(會(huì)話)出現(xiàn)了,它會(huì)在服務(wù)器上存儲(chǔ)用戶(hù)信息以便將來(lái)使用(比如用戶(hù)名稱(chēng),購(gòu)物車(chē)購(gòu)買(mǎi)商品等)。

            但是session是臨時(shí)的,用戶(hù)離開(kāi)網(wǎng)站將被刪除。如果要永久存儲(chǔ)信息,可以保存在數(shù)據(jù)庫(kù)中!

            session工作原理:為每個(gè)用戶(hù)創(chuàng)建一個(gè)session id(核心?。。。6鴖ession id是存儲(chǔ)在cookie中的,也就是說(shuō)如果瀏覽器禁用了cookie,那么session會(huì)失效?。ǖ强梢酝ㄟ^(guò)其它方式實(shí)現(xiàn),如:通過(guò)URL傳遞session id)

            用戶(hù)驗(yàn)證一般采用session。

            cookie:

            目的:網(wǎng)站標(biāo)記用戶(hù)身份而存儲(chǔ)在本地客戶(hù)端的數(shù)據(jù)(通常經(jīng)過(guò)加密)。

            1. 用戶(hù)訪問(wèn)網(wǎng)頁(yè)時(shí),名字記錄在cookie中;

            2. 下次繼續(xù)訪問(wèn)該網(wǎng)頁(yè)時(shí),可以從cookie中讀取用戶(hù)訪問(wèn)記錄。

            cookie會(huì)在同源的http請(qǐng)求攜帶(即使不需要),即在客戶(hù)端和服務(wù)器之間來(lái)回傳遞!

            cookie的數(shù)據(jù)大小不超過(guò)4k

            cookie的有效期:設(shè)置的cookie有效時(shí)間之前一直有效,即使瀏覽器關(guān)閉!

            localStorage & sessionStorage:

            早期,本地緩存普遍使用的是cookie,但是web存儲(chǔ)需要更安全、更快速!

            這些數(shù)據(jù)不會(huì)保存在服務(wù)器上(存儲(chǔ)在客戶(hù)端),不會(huì)影響服務(wù)器性能!

            sessionStorage和localStorage數(shù)據(jù)存儲(chǔ)也有大小限制,但卻比cookie大得多,可以達(dá)到5M甚至更大!

            localStorage:沒(méi)有時(shí)間限制的數(shù)據(jù)存儲(chǔ)!

            sessionStorage:由英文意思也可知,它是對(duì)session的數(shù)據(jù)存儲(chǔ),所以在用戶(hù)關(guān)閉瀏覽器(標(biāo)簽頁(yè)/窗口)后,數(shù)據(jù)被刪除!

            HTML5 web存儲(chǔ)支持情況:

            IE8以上,現(xiàn)代瀏覽器。

            數(shù)據(jù)以鍵值對(duì)存儲(chǔ):

            localStorage和sessionStorage都有以下幾個(gè)方法:

            1. localStorage.setItem(key,value):設(shè)置(保存)數(shù)據(jù);相當(dāng)于localStorage.key=value!

            2. localStorage.getItem(key):獲取數(shù)據(jù)

            3. localStorage.removeItem(key):刪除單個(gè)數(shù)據(jù)

            4. localStorage.clear():刪除所有數(shù)據(jù)

            5. localStorage.key(index):獲取某個(gè)索引的鍵值

            <!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>
                <div id="test"></div>
                <script>
                    if (typeof (Storage) != undefined) {
                        localStorage.name = 'xiao ming';
                        localStorage.setItem('name1', 'Apple');
                        document.getElementById('test').innerHTML = "you are: " + localStorage.name;
                        console.log("first:" + localStorage.name1 + "," + localStorage.key(0));
                        localStorage.removeItem('name1');
                        console.log("second: " + localStorage.name1);
                        console.log("third: " + localStorage.getItem('name'));
                        localStorage.clear();
                        console.log("last:" + localStorage.name);
                    } else {
                        document.getElementById('test').innerHTML = "更新瀏覽器吧!目前瀏覽器不支持stroage";
                    }
                    
                </script>
            </body>
            </html>

            程序運(yùn)行結(jié)果:

            HTML5中Web緩存和運(yùn)用程序緩存的示例分析

            注意:鍵值對(duì)是以字符串保存的,根據(jù)需求應(yīng)改變類(lèi)型(比如做加法,變?yōu)镹umber型)。

             HTML5運(yùn)用程序緩存(Application Cache):

            通過(guò)創(chuàng)建cache manifest文件,web運(yùn)用可被緩存,并且無(wú)網(wǎng)絡(luò)狀態(tài)可以進(jìn)行訪問(wèn)!

            Application Cache優(yōu)勢(shì):

            1.離線瀏覽;
            2.速度更快:已緩存資源加載更快;
            3.減少瀏覽器負(fù)載:客戶(hù)端將只從服務(wù)器下載或更新更改過(guò)的資源

            支持情況:

            IE10以上,現(xiàn)代瀏覽器。

            使用:

            <!DOCTYPE html>
            <html manifest="demo.appcache">
            </html>

            注意:要開(kāi)啟application cache,需指定manifest屬性(擴(kuò)展名:.appcache);如果未指定manifest屬性,頁(yè)面不會(huì)緩存(除非在manifest文件中直接指定了該頁(yè)面?。?/p>

            manifest文件在服務(wù)器上需正確的配置MIME-type:text/cache-manifest。

            Manifest文件:

            manifest是簡(jiǎn)單的文本文件,它告知瀏覽器被緩存的內(nèi)容以及不被緩存的內(nèi)容!

            manifest可分為三部分:

            CACHE MANIFEST:此項(xiàng)列出的文件將在首次下載后進(jìn)行緩存!

            NETWORK:此項(xiàng)列出的文件需要與服務(wù)器進(jìn)行網(wǎng)絡(luò)連接,不會(huì)被緩存!

            FALLBACK:此項(xiàng)列出當(dāng)頁(yè)面無(wú)法訪問(wèn)時(shí)的回退頁(yè)面(如:404頁(yè)面)!

            test.appcache:

            CACHE MANIFEST
            #2017 11 21 v10.0.1
            /test.css
            /logo.gif
            /main.js
            
            NETWORK
            /login.php
            /register.php
            
            FALLBACK
            #/html/目錄中文件無(wú)法訪問(wèn)時(shí),用/offline.html替代
            /html/ /offline.html

            更新application cache的情況:
            1.用戶(hù)清空瀏覽器緩存!
            2.manifest文件被更改(#:表示注釋?zhuān)瑫r(shí)如果更改為#2018 1 1 v20.0.0,則瀏覽器會(huì)重新緩存!)
            3.程序進(jìn)行更新application cache!

            Web Workers:

            web workers是運(yùn)行在后臺(tái)的javascript,獨(dú)立于其它腳本,不會(huì)影響頁(yè)面性能!

            而一般的HTML頁(yè)面上執(zhí)行腳本時(shí),除非腳本加載完成,否則頁(yè)面不會(huì)響應(yīng)!

            支持情況:IE10以上,現(xiàn)代瀏覽器

            示例: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>計(jì)數(shù):<output id="count"></output></p>
                <button onclick="startWorker()">開(kāi)始</button>
                <button onclick="overWorker()">結(jié)束</button>
            
                <script>
                    var w;
                    function startWorker(){
                        // 檢測(cè)瀏覽器是否支持web worker
                        if(typeof(Worker)!=='undefined'){
                            if(typeof(w)=='undefined'){
                                //創(chuàng)建web worker對(duì)象
                                w=new Worker('testWorker.js');
                            }
                            // 事件持續(xù)監(jiān)聽(tīng)(即使外部腳本已經(jīng)完成),除非被終止
                            w.onmessage=function(event){
                                document.getElementById('count').innerHTML=event.data;
                            };
                        }else{
                            document.getElementById('count').innerHTML='瀏覽器不支持web worker';
                        }
                    }
                    function overWorker() {
                        // 終止web worker對(duì)象,釋放瀏覽器/計(jì)算機(jī)資源
                        w.terminate();
                        w=undefined;
                    }
                </script>
            </body>
            </html>

            testWorker.js文件:

            var i=0;
            function timedCount() {
                i+=1;
                // 重要的部分,向html頁(yè)面?zhèn)骰匾欢涡畔?    postMessage(i);
                setTimeout('timedCount()',500);
            }
            timedCount();

            注意1:通常web worker不是用于如此簡(jiǎn)單的任務(wù),而是用在更耗CPU資源的任務(wù)!

            注意2:在chrome中運(yùn)行會(huì)產(chǎn)生“cannot be accessed from origin 'null'”的錯(cuò)誤,我的解決方法是:xampp中開(kāi)啟apache,用http://localhost/進(jìn)行訪問(wèn)。

            web worker缺點(diǎn):

            由于web worker位于外部文件中,所以它無(wú)法訪問(wèn)下列javascript對(duì)象:

            1. window對(duì)象;

            2. document對(duì)象;

            3. parent對(duì)象。

            HTML5 server-sent events(服務(wù)器發(fā)送事件):

            server-sent事件是單向信息傳遞;網(wǎng)頁(yè)可以自動(dòng)獲取來(lái)自服務(wù)器的更新!

            以前:網(wǎng)頁(yè)先詢(xún)問(wèn)是否有可用的更新,服務(wù)器發(fā)送數(shù)據(jù),進(jìn)行更新(雙向數(shù)據(jù)傳遞)!

            支持情況:除IE以外的現(xiàn)代瀏覽器均支持!

            示例代碼: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>
                <div id="test"></div>
                <script>
                    // 判斷瀏覽器是否支持EventSource
                    if(typeof(EventSource)!==undefined){
                        // 創(chuàng)建EventSource對(duì)象
                        var source=new EventSource("test.php");
                        // 事件監(jiān)聽(tīng)
                        source.onmessage=function(event){
                            document.getElementById('test').innerHTML+=event.data+"<br>";
                        };
                    }else{
                        document.getElementById('test').innerHTML="sorry,瀏覽器不支持server sent event";
                    }
                </script>
            </body>
            </html>

            test.php:

            <?php
            header('Content-Type:text/event-stream');
            header('Cache-Control:no-cache');
            
            $time=date('r');
            echo "data:The server time is: {$time} \n\n";
            // 刷新輸出數(shù)據(jù)
            flush();

            注意:后面沒(méi)有內(nèi)容,php文件可以不用"?>"關(guān)閉!

            HTML5 WebSocket:

            1. WebSocket是HTML5提供的一種在單個(gè)TCP連接上建立全雙工(類(lèi)似電話)通訊的協(xié)議;

            2. 瀏覽器和服務(wù)器之間只需要進(jìn)行一次握手的操作,瀏覽器和服務(wù)器之間就形成了一條快速通道,兩者之間就可直接進(jìn)行數(shù)據(jù)傳送;

            3. 瀏覽器通過(guò)javascript建立WebSocket連接請(qǐng)求,通過(guò)send()向服務(wù)器發(fā)送數(shù)據(jù),onmessage()接收服務(wù)器返回的數(shù)據(jù)。

             WebSocket如何兼容低瀏覽器:

            1. Adobe Flash Socket;

            2. ActiveX HTMLFile(IE);

            3. 基于multipart編碼發(fā)送XHR;

            4. 基于長(zhǎng)輪詢(xún)的XHR

            WebSocket可以用在多個(gè)標(biāo)簽頁(yè)之間的通信!

            以上是“HTML5中Web緩存和運(yùn)用程序緩存的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

            網(wǎng)站名稱(chēng):HTML5中Web緩存和運(yùn)用程序緩存的示例分析-創(chuàng)新互聯(lián)
            文章鏈接:http://www.jbt999.com/article44/eephe.html

            成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作軟件開(kāi)發(fā)、商城網(wǎng)站、靜態(tài)網(wǎng)站、服務(wù)器托管、小程序開(kāi)發(fā)

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

            成都網(wǎng)站建設(shè)

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 69精品久久久久中文字幕 | 成人做爰免费A片在线观看视频网站 | 亚洲不卡顿一区二区 | 亚洲欧洲日本视频 | 亚洲精品天堂无码 |