nodejs 静态服务器和http服务器有什么区别

nodejs 静态服务器和http服务器有什么区别,第1张

参考cnodejs.org上面的静态服务器例子,写了下面的一个nodejs静态服务器例子,里面包含cache,压缩,贴代码如下

/**

* 静态文件服务器测试例子

* User: xuwm

* Date: 13-5-17

* Time: 上午8:38

* To change this template use File | Settings | File Templates.

*/

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

//创建http服务端

var server=http.createServer(function(request,response){

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 //默认取当前默认下的index.html

}

var realPath = path.join("assets", path.normalize(pathname.replace(/\.\./g, "")))

console.log(realPath)

var pathHandle=function(realPath){

//用fs.stat方法获取文件

fs.stat(realPath,function(err,stats){

if(err){

response.writeHead(404,"not found",{'Content-Type':'text/plain'})

response.write("the request "+realPath+" is not found")

response.end()

}else{

if(stats.isDirectory()){

}else{

var ext = path.extname(realPath)

ext = ext ? ext.slice(1) : 'unknown'

var contentType = mime[ext] || "text/plain"

response.setHeader("Content-Type", contentType)

var lastModified = stats.mtime.toUTCString()

var ifModifiedSince = "If-Modified-Since".toLowerCase()

response.setHeader("Last-Modified", lastModified)

if (ext.match(config.Expires.fileMatch)) {

var expires = 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.headers[ifModifiedSince]) {

console.log("从浏览器cache里取")

response.writeHead(304, "Not Modified")

response.end()

} else {

var raw = fs.createReadStream(realPath)

var acceptEncoding = request.headers['accept-encoding'] || ""

var matched = ext.match(config.Compress.match)

if (matched &&acceptEncoding.match(/\bgzip\b/)) {

response.writeHead(200, "Ok", {'Content-Encoding': 'gzip'})

raw.pipe(zlib.createGzip()).pipe(response)

} else if (matched &&acceptEncoding.match(/\bdeflate\b/)) {

response.writeHead(200, "Ok", {'Content-Encoding': 'deflate'})

raw.pipe(zlib.createDeflate()).pipe(response)

} else {

response.writeHead(200, "Ok")

raw.pipe(response)

}

}

}

}

})

}

pathHandle(realPath)

})

server.listen(port)

console.log("http server run in port:"+port)

首先需要在JS文件里创建一个assets的文件夹,里面放入你要浏览的静态文件,比如,index.html,demo.js等。

运行方式为:在命令行里切换到上面的JS的文件目录,然后输入 node JS文件名

一、静态IP与动态IP区别:

1、动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是ISP在装机时分配给用户的IP地址,可以直接连接上网,不需要获取IP地址。

静态IP是可以直接上网的IP段,该IP在ISP装机时会划分一个IP地址给你,让计算机在连接网络时不再自动获取网络地址,避免了网络连接上的困扰。

2、动态IP和静态IP对网速的影响,ISP对每个用户所提供的网速,并不是从IP地址限定的,而是从用户连接到ISP的物理线路上进行限定的。

3、ISP分配的静态IP地址ISP赠送IP地址的情况是不可能存在的。准确的应该说是ISP将IP地址租借给用户使用。因为在目前IPv4地址已经分配完毕,严重稀缺的情况下。ISP是不可能随便将一个IP地址赠送给用户的。

二、静态IP与动态IP使用。

1、动态IP上网,又叫做DHCP上网。自动获取IP上网。动态IP这种上网方式,在未使用路由器的情况下,只需要把这根宽带网线连接到电脑上,电脑上的IP地址设置为自动获得,电脑就可以实现上网了。

2、静态IP上网,又叫做固定IP地址上网。这种上网方式,宽带运营商会提供一根一个IP地址、子网掩码、网关和DNS服务器地址给用户。在未使用路由器的情况下,只需要把这根入户网线连接到电脑上,并且手动设置电脑上的IP地址,这样电脑才能上网。

扩展资料:

公有地址由Inter NIC(Internet Network Information Center 因特网信息中心)负责。这些IP地址分配给注册并向Inter NIC提出申请的组织机构。通过它直接访问因特网。

私有地址:属于非注册地址,专门为组织机构内部使用。以下列出留用的内部私有地址A类 10.0.0.0--10.255.255.255B类 172.16.0.0--172.31.255.255C类 192.168.0.0--192.168.255.255

对于一个设立了因特网服务的组织机构,由于其主机对外开放了诸如WWW 、FTP 、E-mail等访问服务,通常要对外公布一个固定的IP地址,以方便用户访问。

当然,数字IP不便记忆和识别,人们更习惯于通过域名来访问主机,而域名实际上仍然需要被域名服务器翻译为IP地址。例如,你的主页地址,用户可以方便地记忆和使用,而域名服务器会将这个域名翻译为101.12.123.234,这才是你在网上的真正地址。

参考资料:百度百科-静态IP

参考资料:百度百科-动态IP


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/349954.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-08
下一篇2023-05-08

发表评论

登录后才能评论

评论列表(0条)

    保存