ホームページ > ウェブフロントエンド > H5 チュートリアル > HTML5のストレージ機能とWebの関連操作方法を解析する SQL_html5チュートリアルスキル

HTML5のストレージ機能とWebの関連操作方法を解析する SQL_html5チュートリアルスキル

WBOY
リリース: 2016-05-16 15:45:55
オリジナル
1357 人が閲覧しました

HTML5 では、クライアント側で構造化データを保存し、次の欠点を克服するために、HTTP セッション Cookie に似た 2 つのメカニズムが導入されています。

Cookie はすべての HTTP リクエストに含まれており、同じデータの転送により Web アプリケーションの速度が低下します。

すべての HTTP リクエストには Cookie が含まれているため、暗号化されていないデータがインターネット上に送信されます。

Cookie は 4KB の限られたデータしか保存できませんが、必要なデータを保存するには十分ではありません。
セッション ストレージとローカル ストレージの 2 つのストレージ方法は、さまざまな状況に対処するために使用されます。

Internet Explorer を含む、最近のほとんどすべてのブラウザは HTML5 ストレージをサポートしています。

Session Storage
_Session Storage_ は、ユーザーが単一のトランザクションを実行するシナリオ向けに設計されていますが、複数のトランザクションを異なるウィンドウで同時に実行できます。

たとえば、ユーザーが同じ Web サイト上の 2 つの異なるウィンドウで航空券を購入した場合。 Web サイトが Cookie を使用してユーザーが購入したチケットを追跡する場合、ユーザーがページをクリックしてあるウィンドウから別のウィンドウに移動するときに、現在購入しているチケットが「漏洩」し、その結果、ユーザーが 1 回のチケットを 2 枚購入することになる可能性があります。気付かずに同じフライト。

HTML5 では、sessionStorage 属性が導入されました。この Web サイトを使用すると、セッションを保持している開いているウィンドウ内の任意のページに引き続きアクセスできます。も負けた。

次のコードはセッション変数を設定し、その変数にアクセスします。

XML/HTML コードコンテンツをクリップボードにコピー
  1. >
  2. <html>
  3. <ボディ>
  4. <スクリプト type="text/ javascript">
  5. if( sessionStorage.hits ){
  6. sessionStorage.hits = 番号(sessionStorage.hits) 1;
  7. }else{
  8. sessionStorage.hits = 1; }
  9. document.write("合計ヒット数:" sessionStorage.hits);
  10. スクリプト
  11. > <
  12. p
  13. >ヒット数を増やすにはページを更新してください。 p> <
  14. p
  15. >ウィンドウを閉じ、再度開いて結果を確認します。 p>
  16. ボディ
  17. >
  18. html
  19. >

    ローカル ストレージ
    _Local Storage_ は、複数のウィンドウにまたがって保存されるように設計されており、現在のセッションで永続化されます。特に、Web アプリケーションでは、パフォーマンス上の理由から、ユーザーによって書かれたドキュメント全体やユーザーのメールボックスなど、数百万バイトのユーザー データをクライアントに保存する必要がある場合があります。

    Cookie はリクエストごとに送信されるため、この状況にはあまりうまく対処できません。

    HTML5 では、時間制限なしでページのローカル ストレージ領域にアクセスするために使用できる localStorage 属性が導入されました。このページを使用するときはいつでもローカル ストレージを利用できます。

    次のコードは、このページにアクセスするたびに、次回ウィンドウを開いたときでもアクセスできるローカル ストレージ変数を設定します。

    XML/HTML コードコンテンツをクリップボードにコピー
    1. >
    2. <html>
    3. <ボディ>
    4. <スクリプト type="text/ javascript">
    5. if( localStorage.hits){
    6. localStorage.hits = 番号(localStorage.hits) 1;
    7. }else{
    8. localStorage.hits = 1; }
    9. document.write("合計ヒット数:" localStorage.hits);
    10. スクリプト
    11. > <
    12. p
    13. >ヒット数を増やすにはページを更新してください。 p> <
    14. p
    15. >ウィンドウを閉じ、再度開いて結果を確認します。 p>
    16. ボディ
    17. >
    18. html
    19. > 上記の概念は簡単に学べます - オンラインで練習してください。
    Web ストレージを削除します
    ローカル マシンに機密データを保存すると危険があり、セキュリティ ホールが残る可能性があります。

    _セッション保存データ_は、セッション終了直後にブラウザによって削除されます。

    ローカル ストレージ設定をクリアするには、localStorage.remove('key') を呼び出す必要があります。この 'key' は、削除する値に対応するキーです。すべての設定をクリアしたい場合は、localStorage.clear() メソッドを呼び出す必要があります。
    次のコードはローカル ストレージを完全にクリアします:

    XML/HTML コード

    コンテンツをクリップボードにコピー

    1. >
    2. <html>
    3. <ボディ>
    4. <スクリプト type="text/ javascript">
    5. localStorage.clear();   
    6. // ヒット数をリセットします。   
    7. if( localStorage.hits ){
    8. localStorage.hits = 番号(localStorage.hits) 1;   
    9. }else{
    10. localStorage.hits = 1;   
    11. }
    12. document.write("Total Hits :" localStorage.hits );   
    13. スクリプト>
    14. <p>ページを更新してもヒットカウンターは増加しません。p>
    15. <p>ウィンドウを閉じて、再度開き、結果を確認します。 p>
    16. ボディ>
    17. html>

    Web SQL データベース API
    Web SQL データベース API は HTML5 規格の一部ではありませんが、SQL 操作を使用するゲスト データベースの API が組み込まれた独立した規格です。
    核心メソッド
    以下は、この教義で定義される 3 つの核心メソッドです。

    openDatabase: このメソッドは、既存のデータベースまたは新しく作成されたデータベースを使用して、データ オブジェクト オブジェクトを作成します。

    SQL を実行
    データベースを開始します
    データベースが存在する場合、openDatabase メソッドはデータベースを開始し、存在しない場合はこのメソッドが作成します。
    次の番号コードを使用してデータ パッケージを作成および公開できます:

    JavaScript コード
    复制コンテンツ到剪贴板
      var
    1. db = openDatabase('mydb','1.0''テスト DB'、2 * 1024 * 1024);  
    2. 上記のメソッドは次の 5 つのパラメータを受け入れます:

      データベース名
      バージョン番号
      説明テキスト
      データベースサイズ
      作成コールバック
      最後と5番目のパラメータである作成コールバックは、データベースの作成後に呼び出されます。ただし、この機能がなくても、ランタイムはデータベースと正しいバージョンを作成します。

      クエリを実行する
      クエリを実行するには、database.transaction() 関数を使用する必要があります。この関数は 1 つのパラメーターを受け取ります。これは、以下に示すように、クエリを実際に実行する役割を担う関数です。

      JavaScript コードコンテンツをクリップボードにコピーします
      1. var db = openDatabase('mydb', '1.0''テスト DB'、2 * 1024 * 1024); db.transaction(
      2. 関数
      3. (tx) { tx.executeSql(
      4. 'ログが存在しない場合はテーブルを作成 (ID は一意、ログ)'
      5. ); });
      6. 上記のクエリ ステートメントは、「mydb」データベースに LOGS というテーブルを作成します。
      挿入操作
      テーブルにエントリを作成するには、次のように単純な SQL クエリを上の例に追加します。

      JavaScript コード
      コンテンツをクリップボードにコピーします

      var
      db = openDatabase(
        'mydb'
      1. , '1.0''テスト DB'、2 * 1024 * 1024); db.transaction(関数 (tx) {
      2. tx.executeSql(
      3. 'ログが存在しない場合はテーブルを作成 (ID は一意、ログ)'); tx.executeSql(
      4. 'INSERT INTO LOGS (id, log) VALUES (1, "foobar")'
      5. ); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")'
      6. );
      7. });
      8. エントリの作成時に次のように動的な値を渡すこともできます:
      9. JavaScript コードコンテンツをクリップボードにコピーします
      var
      db = openDatabase(

      'mydb'
      , '1.0'
      'テスト DB'
      1. 、2 * 1024 * 1024); db.transaction(関数 (tx) { tx.executeSql('ログが存在しない場合はテーブルを作成 (ID は一意、ログ)'); tx.executeSql('INSERT INTO ログ
      2. (id,log) VALUES (?, ?'), [e_id, e_log];
      3. });
      4. ここで、e_id と e_log は外部変数であり、executeSql は配列パラメータの各エントリを「?」にマップします。

        読み取り操作
        既存のレコードを読み取るには、次のようにコールバックを使用して結果をキャプチャできます:

        JavaScript コードコンテンツをクリップボードにコピーします
        1. var db = openDatabase('mydb', '1.0''テスト DB'、2 * 1024 * 1024); db.transaction(
        2. 関数 (tx) { tx.executeSql(
        3. 'ログが存在しない場合はテーブルを作成 (ID は一意、ログ)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "foobar")'
        4. ); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, "logmsg")');
        5. }); db.transaction(関数
        6. (tx) {
        7. tx.executeSql('SELECT * FROM LOGS', [], 関数
        8. (tx, results) { var len = results.rows.length, i; msg =
        9. "

          見つかった行: " len "

          ";
        10. document.querySelector('#status').innerHTML =
        11. for (i = 0; i < len; i ){ アラート(results.rows.item(i).log);
        12. } }、
        13. null);
        14. });
        15. 最後の例最後に、この例を次のような完全な HTML5 ドキュメントに組み込み、Safari で実行してみましょう:
        16. JavaScript コード
        17. コンテンツをクリップボードにコピーします
          1.   
          2.   
          3. <頭>   
          4.   
          5.   
          6.   
          7. "ステータス" name="ステータス">ステータスメッセージ
          8.   
          9.   


        この会議は次のような結果を生成します:

        代制
        代码如下:


        ログ メッセージが作成され、行が挿入されました。

        見つかった行: 2

        フーバー

        ログメッセージ

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート