Was ist eine Sitzung im Knoten? Wie benutzt man?
Der Inhalt dieses Artikels befasst sich mit der Frage, was eine Sitzung im Knoten ist. Wie benutzt man? Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
Vorwort
Im vorherigen Artikel wurden Cookies im Knoten vorgestellt. In diesem Artikel wird die Sitzung weiter erläutert.
Was ist eine Sitzung?
Sitzung ist nur eine Sitzung. Was ist also eine Sitzung?
Sitzung ist ein Konzept mit einer größeren Granularität als Verbindung. Eine 会话
kann mehrere 连接
s enthalten, und jede Verbindung wird als Vorgang der Sitzung betrachtet.
Wenn der Benutzer zwischen Webseiten wechselt, gehen die im Sitzungsobjekt gespeicherten Variablen nicht verloren, sondern bleiben während der gesamten Benutzersitzung bestehen.
Wenn ein Benutzer eine Webseite von Ihrer Anwendung anfordert, erstellt der Webserver automatisch ein Sitzungsobjekt, sofern der Benutzer noch keine Sitzung hat. Wenn eine Sitzung abläuft oder abgebrochen wird, beendet der Server die Sitzung.
Nachdem wir so viel gesagt haben, werfen wir zunächst einen Blick auf dieses Produkt.
Es stellt sich heraus, dass die von der Sitzungs-Middleware generierte Sitzung ein Objekt ist, das Cookie-Informationen enthält.
Sitzung im Knoten
Installieren Sie zunächst das Express-Framework, die CookieParser-Middleware und die Express-Sitzungs-Middleware
npm i express --save npm i cookie-parser --save npm i express-session --save
Standardmäßig speichert die Express-Sitzungs-Middleware Sitzungsinformationen, in denen sie gespeichert ist Speicher und erfordert 签名cookie
, daher müssen Sie ihm ein 秘钥
übergeben, wenn Sie cookieParser() verwenden. Wenn kein geheimer Schlüssel vorhanden ist, wird Error: secret option required for sessions
Der Code lautet wie folgt:
var express = require('express'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var app = express() app.use(cookieParser()) const hour = 1000 * 60 * 60; var sessionOpts = { // 设置密钥 secret: 'a cool secret', // Forces the session to be saved back to the session store resave: true, // Forces a session that is "uninitialized" to be saved to the store. saveUninitialized: true, // 设置会话cookie名, 默认是connect.sid key: 'myapp_sid', // If secure is set to true, and you access your site over HTTP, the cookie will not be set. cookie: { maxAge: hour * 2, secure: false } } app.use(session(sessionOpts)) app.use(function(req, res, next) { if (req.url === '/favicon.ico') { return } // 同一个浏览器而言,req是同一个 var sess = req.session; console.log(sess) if (sess.views) { sess.views++; } else { sess.views = 1; } res.setHeader('Content-Type', 'text/html'); res.write('<p>views: ' + sess.views + '</p>'); res.end(); }); app.listen(4000);
Der obige Code implementiert eine einfache 页面浏览计数
-Funktion.
Führen Sie den obigen Code aus, Sie können den Browser öffnen, die Seite kontinuierlich aktualisieren und den im Knotenprogramm gedruckten Sess-Wert beobachten.
Wir haben festgestellt, dass beim Aktualisieren der Seite im selben Browser dieselbe Sitzung auf der Konsole gedruckt wurde, der Wert der Ansichten jedoch geändert wurde. Mit anderen Worten: Mehrere HTTP-Verbindungen entsprechen derselben Sitzung.
Sitzung wird in Redis gespeichert
Standardmäßig speichert die Express-Sitzungs-Middleware Sitzungsinformationen im Speicher, aber während der Entwicklung und Produktion ist es am besten, eine dauerhafte und skalierbare Datenspeicherung für Ihre Sitzungsdaten zu haben . Die Express-Community hat mehrere Sitzungsspeicher erstellt, die Datenbanken verwenden, darunter MongoDB, Redis, Memcached, PostgreSQL und andere. Aber niedrige Latenz 键/值存储
eignet sich am besten für diese Art von flüchtigen Daten. Hier verwenden wir zunächst Redis, um Sitzungsinformationen zu speichern.
Installieren Sie zunächst das Connect-Redis-Modul
npm i connect-redis --save
Der Code lautet wie folgt:
var express = require('express'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var RedisStore = require('connect-redis')(session); var app = express() app.use(cookieParser()) var options = { host: '127.0.0.1', port: 6379, db: 1, // Database index to use. Defaults to Redis's default (0). prefix: 'ID:' // Key prefix defaulting to "sess:" // pass: 'aaa' // Password for Redis authentication } const hour = 1000 * 60 * 60; var sessionOpts = { store: new RedisStore(options), // 设置密钥 secret: 'a cool secret', // Forces the session to be saved back to the session store resave: true, // Forces a session that is "uninitialized" to be saved to the store. saveUninitialized: true, // 设置会话cookie名 key: 'myapp_sid', // If secure is set to true, and you access your site over HTTP, the cookie will not be set. cookie: { maxAge: hour * 8, secure: false } } app.use(session(sessionOpts)) // 如果没有secret,会提醒 Error: secret option required for sessions app.use(function(req, res, next) { if (req.url === '/favicon.ico') { return } var sess = req.session; var id = req.sessionID; // session ID, 只读 console.log(sess, id); if (sess.views) { sess.views++; // 如果放在res.end()后,不会自增 res.setHeader('Content-Type', 'text/html'); res.write('<p>views: ' + sess.views + '</p>'); res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>'); res.end(); } else { sess.views = 1; res.end('welcome to the session demo. refresh!'); } }); app.listen(4000);
Im obigen Programm werden die Sitzungsinformationen in der DB1-Datenbank von Redis gespeichert . Nach dem Ausführen, aktualisieren Sie den Browser. Die Informationen in der Datenbank lauten wie folgt:
Sitzung wird in mongoDb gespeichert
Zuerst: Sie müssen das Connect-Mongo-Modul installieren
npm i connect-mongo --save
Der Code lautet wie folgt:
var express = require('express'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var MongoStore = require('connect-mongo')(session); const hour = 1000 * 60 * 60 var app = express() app.use(cookieParser()) app.use(session({ secret: 'a cool secret', key: 'mongo_sid', cookie: { maxAge: hour * 8, secure: false }, resave: true, saveUninitialized: true, store: new MongoStore({ url: 'mongodb://@localhost:27017/demodb' }) })); app.use(function(req, res, next) { if (req.url === '/favicon.ico') { return } var sess = req.session; var id = req.sessionID; // session ID, 只读 console.log(sess, id); if (sess.views) { sess.views++; } else { sess.views = 1; } res.setHeader('Content-Type', 'text/html'); res.write('<p>views: ' + sess.views + '</p>'); res.write('<p>expires in: ' + (sess.cookie.maxAge / 1000) + 's</p>'); res.write('<p>httpOnly: ' + sess.cookie.httpOnly + '</p>'); res.write('<p>path: ' + sess.cookie.path + '</p>'); res.write('<p>secure: ' + sess.cookie.secure + '</p>'); res.end(); }); app.listen(4000);
Aktualisieren Sie nach dem Ausführen die Browserseite und stellen Sie fest, dass die folgenden Sitzungsinformationen in der Sitzungssammlung gespeichert wurden die demodb-Datenbank.
Manche fragen sich vielleicht: Das Ergebnis ist sichtbar, aber was ist dabei passiert?
Tatsächlich generiert die Sitzungs-Middleware ein session对象
(das Cookie-Informationen enthält). Dieses Sitzungsobjekt wird gleichzeitig in der MongoDb-Datenbank gespeichert , der Browser-Client Der Client speichert das Cookie automatisch in diesem Sitzungsobjekt. Beachten Sie, dass der Browser das Cookie speichert, nicht das Sitzungsobjekt.
Dieses Cookie hat eine Ablaufzeit. Die im obigen Code festgelegte Ablaufzeit beträgt beispielsweise 8 Stunden. Mit anderen Worten: Dieses Cookie verschwindet nach 8 Stunden automatisch im Browser.
Verwandte Empfehlungen:
So verwenden Sie socket.io_node.js im Express des Knotens
Das obige ist der detaillierte Inhalt vonWas ist eine Sitzung im Knoten? Wie benutzt man?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Sortierindex ist eine Art von MongoDB -Index, mit dem die Sortierung von Dokumenten in einer Sammlung nach bestimmten Feldern sortiert werden kann. Durch das Erstellen eines Sortierindex können Sie die Ergebnisse der Abfrageergebnisse ohne zusätzliche Sortiervorgänge schnell sortieren. Zu den Vorteilen gehören schneller Sortieren, Überschreibungsanfragen und On-Demand-Sortieren. Die Syntax ist db.collection.createinNex ({field: & lt; sortieren order & gt;}), wobei & lt; sortieren order & gt; ist 1 (aufsteigende Ordnung) oder -1 (absteigende Reihenfolge). Sie können auch Multi-Field-Sortierindizes erstellen, in denen mehrere Felder sortiert werden.

Um die Leistung der PostgreSQL -Datenbank in Debian -Systemen zu verbessern, müssen Hardware, Konfiguration, Indexierung, Abfrage und andere Aspekte umfassend berücksichtigt werden. Die folgenden Strategien können die Datenbankleistung effektiv optimieren: 1. Hardware -Ressourcenoptimierungsspeichererweiterung: Angemessener Speicher ist für Cache -Daten und -Indexes von entscheidender Bedeutung. Hochgeschwindigkeitsspeicher: Die Verwendung von SSD-SSD-Laufwerken kann die E/A-Leistung erheblich verbessern. Multi-Core-Prozessor: Nutzen Sie die Verarbeitung von Multi-Core-Prozessoren voll und ganz, um eine parallele Abfrageverarbeitung zu implementieren. 2. Datenbankparameter-Tuning Shared_Buffers: Gemäß der Einstellung der Systemspeichergröße wird empfohlen, sie auf 25% -40% des Systemspeichers einzustellen. Work_Mem: steuert den Speicher von Sortier- und Hashing -Operationen, normalerweise auf 64 MB auf 256 m eingestellt

MongoDB eignet sich besser für die Verarbeitung unstrukturierter Daten und schneller Iteration, während Oracle besser für Szenarien geeignet ist, die eine strenge Datenkonsistenz und komplexe Abfragen erfordern. 1. Das Dokumentmodell von MongoDB ist flexibel und geeignet für den Umgang mit komplexen Datenstrukturen. 2. Das Beziehungsmodell von Oracle ist streng, um die Datenkonsistenz und die komplexe Abfrageleistung sicherzustellen.

In Debian -Systemen werden Readdir -Systemaufrufe zum Lesen des Verzeichnisinhalts verwendet. Wenn seine Leistung nicht gut ist, probieren Sie die folgende Optimierungsstrategie aus: Vereinfachen Sie die Anzahl der Verzeichnisdateien: Teilen Sie große Verzeichnisse so weit wie möglich in mehrere kleine Verzeichnisse auf und reduzieren Sie die Anzahl der gemäß Readdir -Anrufe verarbeiteten Elemente. Aktivieren Sie den Verzeichnis -Inhalt Caching: Erstellen Sie einen Cache -Mechanismus, aktualisieren Sie den Cache regelmäßig oder bei Änderungen des Verzeichnisinhalts und reduzieren Sie häufige Aufrufe an Readdir. Speicher -Caches (wie Memcached oder Redis) oder lokale Caches (wie Dateien oder Datenbanken) können berücksichtigt werden. Nehmen Sie eine effiziente Datenstruktur an: Wenn Sie das Verzeichnis -Traversal selbst implementieren, wählen Sie effizientere Datenstrukturen (z.

Um eine MongoDB -Datenbank einzurichten, können Sie die Befehlszeile (Verwendung und db.CreateCollection ()) oder die Mongo -Shell (Mongo, Verwendung und DB.CreateCollection ()) verwenden. Weitere Einstellungsoptionen umfassen das Anzeigen von Datenbank (anzeigen DBS), Ansichtskollektionen (Sammlungen anzeigen), das Löschen von Datenbank (db.dropdatabase ()), das Löschen von Sammlungen (db. & Amp; lt; Collection_Name & amp;

Zu den wichtigsten Merkmalen von Redis gehören Geschwindigkeit, Flexibilität und Reich Datenstrukturunterstützung. 1) Geschwindigkeit: Redis ist eine In-Memory-Datenbank, und Lese- und Schreibvorgänge sind fast augenblicklich und für Cache und Sitzungsverwaltung geeignet. 2) Flexibilität: Unterstützt mehrere Datenstrukturen wie Zeichenfolgen, Listen, Sammlungen usw., die für die komplexe Datenverarbeitung geeignet sind. 3) Unterstützung bei der Datenstruktur: Bietet Zeichenfolgen, Listen, Sammlungen, Hash -Tabellen usw., die für unterschiedliche Geschäftsanforderungen geeignet sind.

Die Kernfunktion von Redis ist ein Hochleistungs-In-Memory-Datenspeicher- und Verarbeitungssystem. 1) Hochgeschwindigkeitsdatenzugriff: Redis speichert Daten im Speicher und bietet Lese- und Schreibgeschwindigkeit auf Mikrosekunden. 2) Reiche Datenstruktur: Unterstützt Zeichenfolgen, Listen, Sammlungen usw. und passt an eine Vielzahl von Anwendungsszenarien. 3) Persistenz: Behalten Sie Daten an, um durch RDB und AOF zu diskutieren. 4) Abonnement veröffentlichen: Kann in Nachrichtenwarteschlangen oder Echtzeit-Kommunikationssystemen verwendet werden.

Verschlüsseln Sie die MongoDB -Datenbank in einem Debian -System erfordert die folgenden Schritte: Schritt 1: Stellen Sie zuerst die MongoDB -Installation durch, dass Ihr Debian -System MongoDB installiert hat. Wenn nicht, lesen Sie bitte das offizielle MongoDB-Dokument für die Installation: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/step 2: Generieren Sie die Verschlüsselungsschlüsseldatei Erstellen Sie eine Datei, die die Verschlüsselungsschlüssel enthält, und setzen
