当前播放: 46 | 架构优化:反向代理与缓存服务
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:课程简介 (5讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | Node.js是什么?
免费
04 | Node.js可以用来做什么?
免费
05 | 课程实战项目介绍
免费
第二章:技术预研篇 (20讲)
06 | 什么是技术预研?
07 | Node.js开发环境安装
08 | 第一个Node.js程序:石头剪刀布游戏
09 | 模块:CommonJS规范
10 | 模块:使用模块规范改造石头剪刀布游戏
11 | 模块:npm
12 | 模块:Node.js内置模块
13 | 异步:非阻塞I/O
14 | 异步:异步编程之callback
15 | 异步:事件循环
16 | 异步:异步编程之Promise
17 | 异步:异步编程之async/await
18 | HTTP:什么是HTTP服务器?
19 | HTTP:简单实现一个HTTP服务器
20 | HTTP:实现网页版石头剪刀布
21 | HTTP:用express优化石头剪刀布游戏
22 | HTTP:用koa优化石头剪刀布游戏
23 | RPC 调用:什么是RPC调用?
24 | RPC调用:Node.js Buffer编解码二进制数据包
25 | RPC 调用:Node.js net建立多路复用的RPC通道
第三章: 项目开发篇 (11讲)
26 | 项目启动:整体需求分析
27 | 项目启动:极客时间App下载页开发
28 | 课程详情页:极客时间详情页需求解构
29 | 课程详情页:将ES6模版字符串改造成模板引擎
30 | 课程详情页:极客时间详情页需求实现
31 | 课程播放页:极客时间播放页需求解构
32 | 课程播放页:GraphQL API服务
33 | 课程播放页:极客时间播放页需求实现
34 | 课程列表页:极客时间列表页需求解构
35 | 课程列表页:用 Vue/React 进行服务端渲染
36 | 课程列表页:极客时间列表页需求实现
第四章:性能调优篇 (10讲)
37 | 性能工具:HTTP服务的性能测试
38 | 性能工具:Node.js性能分析工具
39 | 代码优化:JavaScript代码性能优化
40 | 代码优化:内存管理优化
41 | 代码优化:Node.js C++插件
42 | 多进程优化:Node.js子进程与线程
43 | 多进程优化:Node.js cluster模块实战与源码解读
44 | 多进程优化:进程守护与管理
45 | 架构优化:动静分离
46 | 架构优化:反向代理与缓存服务
第五章:框架和工程化篇 (11讲)
47 | 概念:框架设计和工程化
48 | 概念:设计模式
49 | 概念:Serverless
50 | 服务端框架搭建:koaless
51 | 服务端框架搭建:屏蔽请求细节
52 | 服务端框架搭建:完成服务端框架
53 | 云函数式工程实现:服务端代码
54 | 云函数式工程实现:工具端代码
55 | 加餐:调试 Node.js 源码
56 | 结束语
57 | 彩蛋:这是一个严肃的课程
46 | 架构优化:反向代理与缓存服务

46 | 架构优化:反向代理与缓存服务

杨浩
腾讯高级工程师
57讲 约600分钟3882
单独订阅¥129
2人成团¥99
1
本节摘要
登录 后留言

精选留言(4)

  • 刘彪
    单独请求3000端口会返回参数,使用代理404错误

    user root;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    events {
        worker_connections 1024;
    }
    http {
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log /var/log/nginx/access.log main;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;

        server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            root /root/static/;

            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

            location ~ /node/(\d*) {
                    proxy_pass http:127.0.0.1:3000/detail?id=$1;
            }

            error_page 404 /404.html;
                location = /40x.html {
            }

            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }

    作者回复: 可以看看access_log和error_log报了什么信息

    2019-11-27
  • 刘彪
    单独请求3000端口会返回参数,使用代理没有反应

    user root;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;

    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;

    events {
        worker_connections 1024;
    }

    http {
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log /var/log/nginx/access.log main;

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;

        server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name _;
            root /root/static/;

            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

            location ~ /node/(\d*) {
                    proxy_pass http:127.0.0.1:3000/detail?id=$1;
            }

            error_page 404 /404.html;
                location = /40x.html {
            }

            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        }

    作者回复: 可以看看access_log和error_log报了什么信息

    2019-11-27
  • 小樱桃
    请问下老师讲的这一套组合方法对于前端感觉很舒服,但能适用于请求量比较大的页面吗?有后端同学质疑用node

    作者回复: 腾讯视频的请求量就很大了。

    后端同学质疑是正常的,所以更需要让他们理解到这里面的好处并且拉伤他们一起努力。

    2019-11-19
  • Snoopyjoy
    老师,cdn的应用是使用cdn加速源站设为当前的服务器,还是使用一个对象存储的服务把静态资源放到对象存储里再通过cdn加速呀?
    如果web静态页通过cdn加速后域名和api服务的域名不同,那么在web页里发送非简单http请求时浏览器会强制先发送一个OPTIONS请求来验证跨域请求的方法是否被允许,会带来一定的性能损耗。这种情况如何处理呀?

    作者回复: 你说的大概是云服务的情况。
    我没有使用云服务的cdn的经历,所以我想问的是云服务的cdn,能不能针对某个路径,把请求反向代理到你的api服务器?这样子,域名就是一样的了。
    如果不行,可以考虑把你存在复杂请求需求的页面,使用api服务器来ssr,这样也可以做到域名一样。
    不过即使是跨域的情况,我觉得性能损耗也还好,因为只有第一次请求会发OPTIONS。

    2019-11-13
    1
收起评论
看过的人还看
玩转webpack

程柳锋  腾讯高级工程师,IVWEB团队社区和工程化负责人

84讲 | 5484 人已学习

拼团 ¥79 原价 ¥99
TypeScript开发实战

梁宵  搜狗营销事业部高级架构师

47讲 | 3047 人已学习

拼团 ¥99 原价 ¥129
浏览器工作原理与实践

李兵  前盛大创新院高级研究员

43讲 | 6284 人已学习

拼团 ¥79 原价 ¥99
JavaScript核心原理解析

周爱民  《JavaScript语言精髓与编程实践》作者,南潮科技(Ruff)首席架构师

21讲 | 3655 人已学习

拼团 ¥55 原价 ¥68