代理与缓存

正向代理与反向代理

正向代理的过程,它隐藏真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务器都被代理服务代替请求,比如浏览器访问google.com,被拦截,于是你在国外搭建一台代理服务器,让代理服务器请求google.com 代理把请求结果返回给我反向代理隐藏真实的服务端

当我们请求www.baidu.com时候,背后有很多服务器为我们服务,www.baidu.com就是我们的反向代理服务器,反向代理服务器会将请求转发到真实的服务器中

两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端

node-http-proxy

一个支持反向代理和负载均衡的npm包

//以前你访问资源是从http://localhost:9000取得,现在通过反向代理服务器http://localhost:8000,他去请求9000端口的内容
var http = require('http'),
    httpProxy = require('http-proxy');

// 创建代理服务器
httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(8000);

// 创建目标服务器(http://localhost:9000)
http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
  res.end();
}).listen(9000);
(2)配置gzip压缩

开启网站的 gzip 压缩功能,通常可以高达70%,也就是说,如果你的网页有30K,压缩之后就变成9K, 对于大部分网站,显然可以明显提高浏览速度(注:需要浏览器支持)。

var compression = require('compression');
app.use(compression());
(3)配置http缓存:maxAge、etag、lastModified等
app.use(express.static(path.join(__dirname, 'public'),{maxAge:100,etag:true,lastModified:true}));
(4)配置combo
app.get('/javascripts', combo.combine({rootPath: path.join(__dirname, 'public')+'/javascripts'}), combo.respond);
app.get('/stylesheets', combo.combine({rootPath: path.join(__dirname, 'public')+'/stylesheets'}), combo.respond);
(5)配置ssi SSI是服务器端嵌入指令,在内容发送到浏览器之前,解析指令标签将其内容包含到网页中
expressSSI.init(express,'http://gome.com.cn');
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • Nginx反向代理(动静分离) 1、网页代码全是PMA。2、Nginx处理静态资源非常强大,在A上部署上PMA代码...
    词穷又词贫阅读 7,223评论 0 1
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,199评论 21 356
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,141评论 6 13
  • 金评西厢,值得再单独写一次。 数年前,途经山西,公务羁身,颇不自由。虽于王家大院、晋祠、平遥古城等几处盘桓,...
    芸娘1阅读 956评论 0 0