Mik*_*ike 6 reactjs server-side-rendering next.js
我们在 Docker 中运行 Next.js。
在本地构建镜像并使用生产后端时,TTFB 几乎为零,但是当我们部署此镜像时,TTFB 在某些情况下可能长达 30 秒。
生产服务器是不需要启动的暖服务器。
我运行了四项测试,以使用相同的生产后端针对相同的路线测量 TTFB。
yarn build && yarn startyarn run dev在 docker 内外测试生产模式时,TTFB 接近于零。
在开发模式下本地测试时,TTFB 几乎与生产相同。
我已经通过 SSH 进入生产环境并确认没有安装开发包,所以我认为我们不可能在开发模式下运行。
我希望生产 TTFB 更接近我们在当地所经历的。
什么可能导致本地和生产之间的差异?
文件
FROM node:10.13.0-alpine
WORKDIR /app
EXPOSE 8080
CMD [ "yarn", "start" ]
COPY . .
RUN yarn install
RUN yarn build
Run Code Online (Sandbox Code Playgroud)
server.js 片段
const express = require('express');
const next = require('next');
const cookieParser = require('cookie-parser');
const jwtDecode = require('jwt-decode');
const { join } = require('path');
const admin = require('firebase-admin');
// serviceAccount used for local development
// https://firebase.google.com/docs/admin/setup
const path = require('path');
const { fetchNewToken } = require('./src/services/Firebase');
let serviceAccount;
const dev = process.env.NODE_ENV !== 'production';
if (dev) {
serviceAccount = require('./credentials/serviceAccountKey.json')
}
admin.initializeApp({
credential: dev ? admin.credential.cert(serviceAccount) : admin.credential.applicationDefault(),
});
const app = next({ dev });
Run Code Online (Sandbox Code Playgroud)
package.json 片段
"scripts": {
"start": "NODE_ENV=production node server.js",
"build": "next build",
"dev": "NODE_ENV=development node server.js",
},
Run Code Online (Sandbox Code Playgroud)
我想到了两件事需要检查。
我想到了负载均衡器,就好像新镜像没有“应该”那样尽快上线。
如果生产当时正在处理请求,则在所有现有请求完成之前,新映像尚未生效。
即使新图像已经发布一段时间后,您是否在每个请求上都遇到问题?喜欢知道正在进行某种安全检查吗?
NextJS 是否调用第三方提供商进行 idk 图像压缩或类似的操作
| 归档时间: |
|
| 查看次数: |
1200 次 |
| 最近记录: |