En se référant à l'exemple de serveur statique ci-dessus Cnodejs.org, j'ai écrit l'exemple de serveur statique NodeJS suivant, qui contient du cache et de la compression, et le code est le suivant:
La copie de code est la suivante:
/ **
* Exemple de test de serveur de fichiers statique
* Utilisateur: Xuwm
* Date: 13-5-17
* Heure: 8:38
* Pour modifier ce modèle, utilisez le fichier | Paramètres | Modèles de fichiers.
* /
Var Port = 3333;
var http = require ("http");
var url = require ("url");
var fs = require ("fs");
var path = require ("path");
var mime = require ("./ mime"). types;
var config = require ("./ config");
var zlib = require ("zlib");
// Créer un serveur HTTP
var server = http.createServer (fonction (demande, réponse) {
var obj = url.parse (request.url);
Response.sethEader ("Server", "Node / V8");
console.log (obj);
var pathname = obj.pathname;
if (pathName.slice (-1) === "/") {
pathName = pathname + config.welcome.file; // l'index par défaut.html est sélectionné sous la valeur par défaut actuelle
}
var realPath = path.join ("actifs", path.normalize (pathname.replace (//././ g, "")));
console.log (realPath);
var pathhandle = fonction (realPath) {
// Utilisez la méthode Fsat pour obtenir le fichier
fsat (realPath, function (err, statts) {
if (err) {
Response.WriteHead (404, "Non trouvé", {'Content-Type': 'Text / PLAIN'});
réponse.write ("la demande" + realPath + "n'est pas trouvé");
réponse.end ();
}autre{
if (stats.isdirectory ()) {
}autre{
var ext = path.ExtName (realPath);
ext = ext? Ext.Slice (1): «inconnu»;
var contentType = mime [ext] || "Texte / Plain";
Response.SetHeader ("Content-Type", ContentType);
var lastmodified = stats.mtime.toutcstring ();
var ifmodifiedSince = "if-modified-lece" .tolowercase ();
Response.Setheader ("dernier modifié", LastModified);
if (ext.match (config.expires.fileMatch)) {
var expire = new Date ();
expires.setTime (expires.getTime () + config.expires.maxage * 1000);
Response.Setheader ("Expires", expires.toutcString ());
Response.sethEader ("Cache-Control", "Max-Age =" + Config.expires.maxage);
}
if (request.headers [ifmodifiedSince] && lastmodified == request.heders [ifmodifiedSince]) {
console.log ("Fetch from Browser Cache")
réponse.writehead (304, "non modifié");
réponse.end ();
} autre {
var brut = fs.creareAdStream (realPath);
var AcceptEncoding = request.Headers ['Accept-Encoding'] || "";
var correspond à = ext.match (config ......match);
if (correspondant && acceptEncoding.match (// bgzip / b /)) {
Response.WriteHead (200, "OK", {'Content-Encoding': 'gzip'});
Raw.Pipe (zlib.creategzip ()). Pipe (réponse);
} else if (correspondant && acceptencoding.match (// bdeflate / b /)) {
Response.WriteHead (200, "OK", {'Content-Encoding': 'Deflate'});
Raw.Pipe (zlib.CreateDeflate ()). Pipe (réponse);
} autre {
Response.WriteHead (200, "OK");
Raw.Pipe (réponse);
}
}
}
}
});
}
PathHandle (realpath);
});
server.Listen (port);
Console.log ("Http Server Exécuter en port:" + port);
Tout d'abord, vous devez créer un dossier d'actifs dans le fichier JS et mettre les fichiers statiques que vous souhaitez parcourir, tels que index.html, demo.js, etc.
La méthode d'exécution est: Passez au répertoire de fichiers JS ci-dessus sur la ligne de commande, puis entrez le nom du fichier JS Node
Entrez http: // localhost: 3333 / dans le navigateur pour voir l'effet.
- remplir dans les deux modules manquants dans le code ci-dessus
mime.js
La copie de code est la suivante:
export.types = {
"CSS": "texte / css",
"gif": "image / gif",
"html": "text / html",
"ico": "image / x-icon",
"jpeg": "image / jpeg",
"jpg": "image / jpeg",
"js": "texte / javascript",
"JSON": "Application / JSON",
"pdf": "application / pdf",
"png": "image / png",
"svg": "image / svg + xml",
"SWF": "Application / X-Shockwave-Flash",
"tiff": "image / tiff",
"txt": "texte / plaine",
"wav": "audio / x-wav",
"WMA": "Audio / X-MS-WMA",
"wmv": "vidéo / x-ms-wmv",
"xml": "texte / xml"
};
config.js
La copie de code est la suivante:
export.expires = {
fileMatch: / ^ (gif | png | jpg | js | css) $ / ig,
Maxage: 60 * 60 * 24 * 365
};
exports.compress = {
Match: / CSS | JS | HTML / IG
};
exports.welcome = {
Fichier: "index.html"
};