美文网首页
代理与缓存

代理与缓存

作者: 水墨小龙虾 | 来源:发表于2017-03-03 19:47 被阅读0次

    正向代理与反向代理

    正向代理的过程,它隐藏真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务器都被代理服务代替请求,比如浏览器访问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');
    

    相关文章

      网友评论

          本文标题:代理与缓存

          本文链接:https://www.haomeiwen.com/subject/jvoqgttx.html