Maison interface Web js tutoriel La différence entre les trois méthodes de stockage de données de JavaScript

La différence entre les trois méthodes de stockage de données de JavaScript

May 16, 2016 pm 03:02 PM
cookie javascript js storage 存储 数据存储

Ce chapitre présenteles différences entre les trois méthodes de stockage de données de javaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Les points communs entre sessionStorage, localStorage et les cookies :

sont tous enregistrés côté navigateur et ont la même origine.

La différence entre sessionStorage, localStorage et cookies :

Les données des cookies sont toujours transportées dans la requête http de la même origine (même si elles ne sont pas nécessaires), cela Autrement dit, le cookie est stocké dans le navigateur et transféré au serveur. SessionStorage et localStorage n'envoient pas automatiquement les données au serveur, mais les enregistrent uniquement localement. Les données des cookies ont également le concept de chemin, qui peut restreindre les cookies à n'appartenir qu'à un certain chemin.

La limite de taille de stockage est également différente. Les données des cookies ne peuvent pas dépasser 4 Ko. Dans le même temps, comme chaque requête http contient des cookies, les cookies ne conviennent que pour sauvegarder de très petites données, telles que les identifiants de session. Bien que sessionStorage et localStorage aient également des limites de taille de stockage, elles sont beaucoup plus volumineuses que les cookies et peuvent atteindre 5 Mo ou plus.

La période de validité des données est différente. sessionStorage : elle n'est valable que jusqu'à la fermeture de la fenêtre actuelle du navigateur, et bien sûr elle ne peut pas être conservée localStorage : elle est toujours valide et est enregistrée même lorsque la fenêtre ou le navigateur est fermé ; fermé, il est donc utilisé comme donnée persistante ; le cookie n'est valide que jusqu'à l'heure d'expiration du cookie définie, même si la fenêtre ou le navigateur est fermé.

Différentes portées, sessionStorage n'est pas partagé dans différentes fenêtres de navigateur, même sur la même page ; localStorage est partagé dans toutes les fenêtres de même origine ; les cookies sont également partagés dans toutes les fenêtres de même origine.

Web Storage prend en charge le mécanisme de notification d'événements, qui peut envoyer des notifications de mise à jour des données aux auditeurs.

L’interface API de Web Storage est plus pratique à utiliser.

La méthode localStorage encapsulée peut contrôler le nombre de données stockées et l'heure

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

  };

});

Copier après la connexion

Méthode d'utilisation

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;)

Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Huawei lancera l'année prochaine des produits de stockage MED innovants : la capacité du rack dépasse 10 Po et la consommation électrique est inférieure à 2 kW Huawei lancera l'année prochaine des produits de stockage MED innovants : la capacité du rack dépasse 10 Po et la consommation électrique est inférieure à 2 kW Mar 07, 2024 pm 10:43 PM

Ce site Web a rapporté le 7 mars que le Dr Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a récemment assisté à la conférence MWC2024 et a spécifiquement présenté la solution de stockage magnétoélectrique OceanStorArctic de nouvelle génération conçue pour les données chaudes (WarmData) et les données froides (ColdData). Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a publié une série de solutions innovantes Source de l'image : Le communiqué de presse officiel de Huawei joint à ce site est le suivant : Le coût de cette solution est 20 % inférieur à celui de la bande magnétique, et son coût est de 20 % inférieur à celui de la bande magnétique. la consommation électrique est 90 % inférieure à celle des disques durs. Selon les médias technologiques étrangers blockandfiles, un porte-parole de Huawei a également révélé des informations sur la solution de stockage magnétoélectrique : le disque magnétoélectronique (MED) de Huawei est une innovation majeure dans le domaine des supports de stockage magnétiques. ME de première génération

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Processus d'installation de Git sur Ubuntu Processus d'installation de Git sur Ubuntu Mar 20, 2024 pm 04:51 PM

Git est un système de contrôle de version distribué rapide, fiable et adaptable. Il est conçu pour prendre en charge des flux de travail distribués et non linéaires, ce qui le rend idéal pour les équipes de développement de logiciels de toutes tailles. Chaque répertoire de travail Git est un référentiel indépendant avec un historique complet de toutes les modifications et la possibilité de suivre les versions même sans accès au réseau ni serveur central. GitHub est un référentiel Git hébergé sur le cloud qui fournit toutes les fonctionnalités du contrôle de révision distribué. GitHub est un référentiel Git hébergé sur le cloud. Contrairement à Git qui est un outil CLI, GitHub dispose d'une interface utilisateur graphique basée sur le Web. Il est utilisé pour le contrôle de version, ce qui implique de collaborer avec d'autres développeurs et de suivre les modifications apportées aux scripts et aux scripts au fil du temps.

Explication détaillée de l'endroit où les cookies du navigateur sont stockés Explication détaillée de l'endroit où les cookies du navigateur sont stockés Jan 19, 2024 am 09:15 AM

Avec la popularité d’Internet, l’utilisation de navigateurs pour surfer sur Internet est devenue un mode de vie. Dans l'utilisation quotidienne des navigateurs, nous rencontrons souvent des situations où nous devons saisir les mots de passe de comptes, comme les achats en ligne, les réseaux sociaux, les e-mails, etc. Ces informations doivent être enregistrées par le navigateur afin qu'elles n'aient pas besoin d'être saisies à nouveau lors de votre prochaine visite. C'est alors que les cookies sont utiles. Que sont les cookies ? Le cookie fait référence à un petit fichier de données envoyé par le serveur au navigateur de l'utilisateur et stocké localement. Il contient le comportement des utilisateurs de certains sites Web.

Quel type de fichier est un fichier DAT ? Quel type de fichier est un fichier DAT ? Feb 19, 2024 am 11:32 AM

Le fichier dat est un format de fichier de données universel qui peut être utilisé pour stocker différents types de données. Les fichiers dat peuvent contenir différentes formes de données telles que du texte, des images, de l'audio et de la vidéo. Il est largement utilisé dans de nombreuses applications et systèmes d’exploitation différents. Les fichiers dat sont généralement des fichiers binaires qui stockent les données en octets plutôt qu'en texte. Cela signifie que les fichiers DAT ne peuvent pas être modifiés ni leur contenu visualisé directement via un éditeur de texte. Au lieu de cela, des logiciels ou des outils spécifiques sont nécessaires pour traiter et analyser les données des fichiers DAT. d

Comment utiliser correctement sessionStorage pour protéger les données sensibles Comment utiliser correctement sessionStorage pour protéger les données sensibles Jan 13, 2024 am 11:54 AM

Comment utiliser correctement sessionStorage pour stocker des informations sensibles nécessite des exemples de code spécifiques Que ce soit dans le développement Web ou le développement d'applications mobiles, nous devons souvent stocker et traiter des informations sensibles, telles que les informations de connexion des utilisateurs, les numéros d'identification, etc. Dans le développement front-end, l'utilisation de sessionStorage est une solution de stockage courante. Cependant, étant donné que sessionStorage est un stockage basé sur un navigateur, certains problèmes de sécurité doivent être pris en compte pour garantir que les informations sensibles stockées ne soient pas consultées et utilisées de manière malveillante.

Foire aux questions et solutions concernant les paramètres des cookies Foire aux questions et solutions concernant les paramètres des cookies Jan 19, 2024 am 09:08 AM

Problèmes courants et solutions pour les paramètres des cookies, des exemples de code spécifiques sont nécessaires Avec le développement d'Internet, les cookies, en tant que l'une des technologies conventionnelles les plus courantes, ont été largement utilisés dans les sites Web et les applications. En termes simples, un cookie est un fichier de données stocké sur l'ordinateur de l'utilisateur qui peut être utilisé pour stocker les informations de l'utilisateur sur le site Web, notamment le nom de connexion, le contenu du panier, les préférences du site Web, etc. Les cookies sont un outil essentiel pour les développeurs, mais en même temps, des paramètres de cookies sont souvent rencontrés.

La relation entre js et vue La relation entre js et vue Mar 11, 2024 pm 05:21 PM

La relation entre js et vue : 1. JS comme pierre angulaire du développement Web ; 2. L'essor de Vue.js en tant que framework front-end ; 3. La relation complémentaire entre JS et Vue ; Vue.

See all articles