常见问题

最近更新时间:2024-09-11 14:55:21

我的收藏

什么是云函数的层?

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

如何自动部署?

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