当前位置:主页 > 查看内容

Serverless SSR 常见问题

发布时间:2021-10-16 00:00| 位朋友查看

简介:什么是云函数的层? 简单来说,层就是把项目中不经常变更的部分独立出来,云函数运行时再把层包含的文件挂载到云函数的执行环境中。详细说明可参考云函数的 层管理 文档。 说明: Next.js 项目的 node_modules 会比较大,项目稳定后,部署不需要每次都更新 n……

什么是云函数的层?

简单来说,层就是把项目中不经常变更的部分独立出来,云函数运行时再把层包含的文件挂载到云函数的执行环境中。详细说明可参考云函数的 层管理 文档。

说明:

  • Next.js 项目的 node_modules 会比较大,项目稳定后,部署不需要每次都更新 node_modules。
  • 把 node_modules 部署为层,每次部署只需要上传业务代码,部署会快很多。
  • 更新 node_modules 的层时,建议使用 npm install --production安装依赖包,减少代码包体积,加快部署和启动速度。

是否需要静态托管?

建议把 SSR 应用的 static 目录和 public 目录下的所有文件启用 静态资源托管。
把静态内容( HTML、JavaScript、CSS、图像、视频等文件)托管到 COS,不需要通过云函数来访问,成本更低,速度也会有比较大的提升。

如何提高网站访问速度?

如果对于网站访问速度有要求,可以启用 CDN 加速。

说明:

  • 自定义的 CDN 域名暂时只支持已经在腾讯云备案的域名。
  • 更多 COS 设置 CDN 加速域名的说明请参考 COS 域名管理。

如何自定义域名?

系统默认会给应用分配一个二级域名,如果用户想用自己的域名访问应用,可以设置自定义域名,具体操作请参考 配置自定义域名。

  • 自定义域名必须是已经在腾讯云备案的域名。
  • 配置自定义域名后,系统会自动绑定到应用上,用户可以通过自定义的域名访问应用。
  • 配置自定义域名后,需要在域名管理设置一条 CNAME 记录,指向系统分配给应用的二级域名。

如何自定义 Web 服务?

此处以 Next.js 为例,如果没有用 Express 等 web 框架替代 Next.js 默认的 Web Server,不需要做任何改动,编译出 .next 文件夹后,直接上传整个工程即可把应用部署到 Serverless 平台上。

如果有用到 Express 或别的 Web 框架,也只需要做很简单的改造,以 Express 为例:

  1. 把启动 js 文件的名称修改为 sls.js,并把它放在项目的根目录下(控制台部署无需更名,只需填写入口文件名称)。

  2. 把监听端口修改为导出 app 应用

     const express = require('express')
     const next = require('next')
    
     async function createServer() {
       const app = next({ dev: false })
       const handle = app.getRequestHandler()
    
       await app.prepare()
       const server = express()
    
       server.all('*', (req, res) => {
         return handle(req, res)
       })
    
       // define binary type for response
       // if includes, will return base64 encoded, very useful for images
       server.binaryTypes = ['*/*']
       return server
     }
     // comment out `listen`
     // exports app server
    
     // createServer().litsen(3000);
    
     module.exports = createServer

    Nuxt.js 项目请参考 Nuxt.js 部署指引。

如何自动部署?

在本地修改和更新代码后,不需要每次都运行 serverless deploy 命令来反复部署。用户可以直接通过 serverless dev 进入开发模式。

  • 在进入 dev 模式后,Serverless 工具将监控文件的修改,当代码文件有更新时,自动再次进行部署,将本地文件更新到云端。
  • dev 模式开启时自动启用在线调试能力,用户可以在Chrome浏览器或者开发IDE内直接调试部署在云端的代码,具体操作参见文档。
  • dev 模式还会实时输出云端日志,每次部署完毕后,对项目进行访问,命令行会实时输出服务端产生的日志,便于查看业务情况和排障。

本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐