Rumah hujung hadapan web tutorial js Perbezaan antara tiga kaedah penyimpanan data JavaScript

Perbezaan antara tiga kaedah penyimpanan data JavaScript

May 16, 2016 pm 03:02 PM
cookie javascript js storage penyimpanan penyimpanan data

Bab ini memperkenalkanperbezaan antara tiga kaedah penyimpanan data javaScript Ia mempunyai nilai rujukan tertentu, saya harap ia dapat membantu anda.

Titik biasa antara sessionStorage, localStorage dan kuki:

semuanya disimpan di sebelah penyemak imbas dan mempunyai asal yang sama .

Perbezaan antara sessionStorage, localStorage dan kuki:

Data kuki sentiasa dibawa dalam permintaan http dari asal yang sama (walaupun ia tidak diperlukan), yang ialah, kuki disimpan dalam penyemak imbas Dipindahkan berulang-alik ke pelayan. SessionStorage dan localStorage tidak menghantar data secara automatik ke pelayan, tetapi hanya menyimpannya secara setempat. Data kuki juga mempunyai konsep laluan, yang boleh menyekat kuki untuk hanya tergolong dalam laluan tertentu.

Had saiz storan juga berbeza Data kuki tidak boleh melebihi 4k Pada masa yang sama, kerana setiap permintaan http membawa kuki, kuki hanya sesuai untuk menyimpan data yang sangat kecil, seperti pengecam sesi. Walaupun sessionStorage dan localStorage juga mempunyai had saiz storan, ia lebih besar daripada kuki dan boleh mencapai 5M atau lebih.

Tempoh kesahihan data adalah berbeza Penyimpanan: ia hanya sah sehingga tetingkap penyemak imbas semasa ditutup, dan secara semula jadi ia tidak boleh diteruskan: ia sentiasa sah dan disimpan walaupun semasa tetingkap atau penyemak imbas ditutup, jadi ia digunakan sebagai data berterusan; Kuki hanya sah sehingga masa tamat tempoh kuki yang ditetapkan, walaupun tetingkap atau penyemak imbas ditutup.

Skop yang berbeza, sessionStorage tidak dikongsi dalam tetingkap penyemak imbas yang berbeza, malah pada halaman yang sama dikongsi dalam semua tetingkap asal yang sama juga dikongsi dalam semua tetingkap asal yang sama;

Storan Web menyokong mekanisme pemberitahuan acara, yang boleh menghantar pemberitahuan kemas kini data kepada pendengar.

Antara muka api Storan Web lebih mudah digunakan.

Kaedah localStorage terkapsul boleh mengawal bilangan data yang disimpan dan masa

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

define(function (require) {

  var $ = require('jquery');

  var Cache = {};

 

  function support() {

    var _t = !(typeof window.localStorage === 'undefined');

    return _t;

  }

 

  $.extend(Cache, {

    config: {

      size: 5,

      // lifeTime: 86400 //一天的秒数

      lifeTime: 1*60

    },

    localStorage: window.localStorage,

    memQueue: (function () {

      if (support()) {

        var jsonStr = window.localStorage.getItem('LRUConfig');

        return jsonStr ? JSON.parse(jsonStr) : {

          keys: {},

          objs: []

        };

      } else {

        return {};

      }

    })(),

 

    get: function(appid, url) {

      if (true == support()) {

        var key = appid + ':' + url;

        //开始做LRU算法。

        this.LRU(key);

        //LRU算法结束。

        var isFresh = true;

        var nowTime = (new Date()).getTime() / 1000;

        if(key in this.memQueue.keys){

          var cacheTime = this.memQueue.keys[key].life / 1000;

          //如果过期时间超过 配置的lifeTime,

          //则清除掉当前缓存

          if(nowTime - cacheTime >= this.config.lifeTime){

            delete this.memQueue.keys[key];

            for (var i=0, len = this.memQueue.objs.length; i < len; i++) {

              var _o = this.memQueue.objs[i];

              if(_o.key == key){

                this.memQueue.objs.splice(i,1);

                break;

              }

            }

            isFresh = false;

          }

        }

        //如果isFresh为假,就是已过期,则返回null,否则从localStorage中取

        return (false == isFresh) ? null : this.localStorage[key];

      }

    },

    set: function(appid, url, value) {

      if (true == support()) {

        var key = appid + &#39;:&#39; + url;

        var lruKey = this.getLRU();

        //淘汰最近最少使用的这个。

        //另外起一个方法读取最符合淘汰的这个

        //前提是当前这个key,不在localStorage里面。

        if (lruKey) {

          this.localStorage.removeItem(lruKey);

        }

        //开始设置一下这个值

        //为了兼容性,用以下方法设置

        if (typeof this.memQueue.objs != &#39;undefined&#39; &&

          this.memQueue.objs.length = this.config.size) {

            var lruKey = this.getLRU();

            //淘汰最近最少使用的这个。

            //另外起一个方法读取最符合淘汰的这个

            if (lruKey) {

              this.localStorage.removeItem(lruKey);

              delete this.memQueue.keys[lruKey];

              for (var i = 0; i < this.memQueue.objs.length; i++) {

                var _o = this.memQueue.objs[i];

                if(_o.key == lruKey){

                  this.memQueue.objs.splice(i,1);

                  break;

                }

              }

            }

          }

        }

 

        this.localStorage[key] = value;

        //当前的key,也必须lru一下

        this.LRU(key);

        //lru结束

 

        this.localStorage.setItem(&#39;LRUConfig&#39;, JSON.stringify(this.memQueue));

      }

    },

    /*

     * 近期最少使用算法

     */

    LRU: function(key) {

      var memQueue = this.memQueue;

      if (typeof memQueue.objs != &#39;undefined&#39;) {

        var _o = memQueue.objs;

 

        //开始计算那个要淘汰的key,

        //就是那个times最大的,如果times最大的有几个

        //则返回那个time最小的

        var isIn = false;

        for (var i = 0, len = _o.length; i < len; i++) {

          _o[i].times = (key == _o[i].key) ? 0 : _o[i].times + 1;

          _o[i].time = (key == _o[i].key) ? (new Date()).getTime() : _o[i].time;

          if(key == _o[i].key && false == isIn){

            isIn = true;

          }

        }

        // 如果

        if(false == isIn){

          var _to = {

            &#39;key&#39;: key,

            &#39;times&#39;: 0,

            &#39;time&#39;: (new Date()).getTime(),

            &#39;life&#39;: (new Date()).getTime()

          };

          this.memQueue.keys[key] = _to;

          this.memQueue.objs.push(_to);

        }

        _o.sort(function(f, s) {

          //按times降序排列。

          if (f.times < s.times) {

            return 1;

          } else if (f.times > s.times) {

            return -1;

          } else {

            //开始比较time

            //按time,时间升序排列

            if (f.time < s.time) {

              return -1;

            } else {

              return 1;

            }

          }

        });

      } else {

        this.memQueue.objs = [];

        this.memQueue.keys = {};

        var _to = {

          &#39;key&#39;: key,

          &#39;times&#39;: 0,

          &#39;time&#39;: (new Date()).getTime(),

          &#39;life&#39;: (new Date()).getTime()

        };

        this.memQueue.keys[key] = _to;

        this.memQueue.objs.push(_to);

        return null;

      }

    },

    /*

     * 读取需要淘汰的一项

     */

    getLRU: function() {

      var _o = this.memQueue.objs;

      if (_o) {

        return (_o.length >= this.config.size) ? _o.shift().key : null;

      }

 

      return null;

 

    }

  });

 

  return {

    &#39;cache&#39;: Cache

  };

});

Salin selepas log masuk

Kaedah penggunaan

1

2

3

4

5

6

var cache = require(&#39;cache&#39;);

// set 值

cache.Cache.set(&#39;ip&#39;, &#39;你自己的一个url&#39;, value);

 

// get值

cache.Cache.get(&#39;ip&#39;)

Salin selepas log masuk
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Huawei akan melancarkan produk storan MED yang inovatif tahun depan: kapasiti rak melebihi 10 PB dan penggunaan kuasa kurang daripada 2 kW Huawei akan melancarkan produk storan MED yang inovatif tahun depan: kapasiti rak melebihi 10 PB dan penggunaan kuasa kurang daripada 2 kW Mar 07, 2024 pm 10:43 PM

Laman web ini melaporkan pada 7 Mac bahawa Dr. Zhou Yuefeng, Presiden Barisan Produk Penyimpanan Data Huawei, baru-baru ini menghadiri persidangan MWC2024 dan secara khusus menunjukkan penyelesaian penyimpanan magnetoelektrik OceanStorArctic generasi baharu yang direka untuk data hangat (WarmData) dan data sejuk (ColdData). Zhou Yuefeng, Presiden barisan produk penyimpanan data Huawei, mengeluarkan satu siri penyelesaian inovatif Sumber imej: Siaran akhbar rasmi Huawei yang dilampirkan pada tapak ini adalah seperti berikut: Kos penyelesaian ini adalah 20% lebih rendah daripada pita magnetik. penggunaan kuasa adalah 90% lebih rendah daripada cakera keras. Menurut bloksandfiles media teknologi asing, jurucakap Huawei turut mendedahkan maklumat tentang penyelesaian storan magnetoelektrik: Cakera magnetoelektronik (MED) Huawei ialah inovasi utama dalam media storan magnetik. Generasi pertama ME

Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Disyorkan: Projek pengesanan dan pengecaman muka sumber terbuka JS yang sangat baik Apr 03, 2024 am 11:55 AM

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web

Penjelasan terperinci tentang tempat kuki penyemak imbas disimpan Penjelasan terperinci tentang tempat kuki penyemak imbas disimpan Jan 19, 2024 am 09:15 AM

Dengan populariti Internet, kami menggunakan pelayar untuk melayari Internet telah menjadi satu cara hidup. Dalam penggunaan harian penyemak imbas, kita sering menghadapi situasi di mana kita perlu memasukkan kata laluan akaun, seperti membeli-belah dalam talian, rangkaian sosial, e-mel, dsb. Maklumat ini perlu direkodkan oleh penyemak imbas supaya ia tidak perlu dimasukkan lagi pada kali berikutnya anda melawat. Ini adalah apabila kuki berguna. Apakah cookies? Kuki merujuk kepada fail data kecil yang dihantar oleh pelayan ke penyemak imbas pengguna dan disimpan secara setempat Ia mengandungi gelagat pengguna beberapa tapak web.

Proses pemasangan Git pada Ubuntu Proses pemasangan Git pada Ubuntu Mar 20, 2024 pm 04:51 PM

Git ialah sistem kawalan versi teragih yang pantas, boleh dipercayai dan boleh disesuaikan. Ia direka bentuk untuk menyokong aliran kerja bukan linear teragih, menjadikannya ideal untuk pasukan pembangunan perisian dari semua saiz. Setiap direktori kerja Git ialah repositori bebas dengan sejarah lengkap semua perubahan dan keupayaan untuk menjejak versi walaupun tanpa akses rangkaian atau pelayan pusat. GitHub ialah repositori Git yang dihoskan pada awan yang menyediakan semua ciri kawalan semakan yang diedarkan. GitHub ialah repositori Git yang dihoskan pada awan. Tidak seperti Git yang merupakan alat CLI, GitHub mempunyai antara muka pengguna grafik berasaskan web. Ia digunakan untuk kawalan versi, yang melibatkan kerjasama dengan pembangun lain dan menjejaki perubahan pada skrip dan

Cara menggunakan sessionStorage dengan betul untuk melindungi data sensitif Cara menggunakan sessionStorage dengan betul untuk melindungi data sensitif Jan 13, 2024 am 11:54 AM

Cara menggunakan sessionStorage dengan betul untuk menyimpan maklumat sensitif memerlukan contoh kod khusus Sama ada dalam pembangunan web atau pembangunan aplikasi mudah alih, kami selalunya perlu menyimpan dan memproses maklumat sensitif, seperti bukti kelayakan log masuk pengguna, nombor ID, dsb. Dalam pembangunan bahagian hadapan, menggunakan sessionStorage ialah penyelesaian storan biasa. Walau bagaimanapun, memandangkan sessionStorage ialah storan berasaskan pelayar, beberapa isu keselamatan perlu diberi perhatian untuk memastikan maklumat sensitif yang disimpan tidak diakses dan digunakan secara berniat jahat.

Hubungan antara js dan vue Hubungan antara js dan vue Mar 11, 2024 pm 05:21 PM

Hubungan antara js dan vue: 1. JS sebagai asas pembangunan Web; 2. Kebangkitan Vue.js sebagai rangka kerja hadapan 3. Hubungan pelengkap antara JS dan Vue; Vue.

Apakah jenis fail ialah fail dat? Apakah jenis fail ialah fail dat? Feb 19, 2024 am 11:32 AM

Fail dat ialah format fail data universal yang boleh digunakan untuk menyimpan pelbagai jenis data. fail dat boleh mengandungi bentuk data yang berbeza seperti teks, imej, audio dan video. Ia digunakan secara meluas dalam pelbagai aplikasi dan sistem pengendalian. fail dat biasanya fail binari yang menyimpan data dalam bait dan bukannya teks. Ini bermakna fail dat tidak boleh diubah suai atau kandungannya dilihat terus melalui penyunting teks. Sebaliknya, perisian atau alatan tertentu diperlukan untuk memproses dan menghuraikan data fail dat. d

Soalan Lazim dan Penyelesaian tentang Tetapan Kuki Soalan Lazim dan Penyelesaian tentang Tetapan Kuki Jan 19, 2024 am 09:08 AM

Masalah dan penyelesaian biasa untuk tetapan kuki, contoh kod khusus diperlukan Dengan perkembangan Internet, kuki, sebagai salah satu teknologi konvensional yang paling biasa, telah digunakan secara meluas dalam laman web dan aplikasi. Kuki, secara ringkasnya, ialah fail data yang disimpan pada komputer pengguna yang boleh digunakan untuk menyimpan maklumat pengguna di tapak web, termasuk nama log masuk, kandungan troli beli-belah, pilihan laman web, dsb. Kuki ialah alat penting untuk pembangun, tetapi pada masa yang sama, tetapan kuki sering ditemui

See all articles