什么是云函数的层?
说明:
Next.js 项目的 node_modules 会比较大,项目稳定后,部署不需要每次都更新 node_modules。
把 node_modules 部署为层,每次部署只需要上传业务代码,部署会快很多。
更新 node_modules 的层时,建议使用
npm install --production
安装依赖包,减少代码包体积,加快部署和启动速度。是否需要静态托管?
建议把 SSR 应用的 static 目录和 public 目录下的所有文件启用 静态资源托管。
把静态内容( HTML、JavaScript、CSS、图像、视频等文件)托管到 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 imagesserver.binaryTypes = ['*/*']return server}// comment out `listen`// exports app server// createServer().litsen(3000);module.exports = createServer
如何自动部署?
在进入 dev 模式后,Serverless 工具将监控文件的修改,当代码文件有更新时,自动再次进行部署,将本地文件更新到云端。
dev 模式开启时自动启用在线调试能力,用户可以在 Chrome 浏览器或者开发 IDE 内直接调试部署在云端的代码。
dev 模式还会实时输出云端日志,每次部署完毕后,对项目进行访问,命令行会实时输出服务端产生的日志,便于查看业务情况和排障。