在 Debian 上“优化 Swagger”通常取决于你指的是 哪一层:
下面按常见场景给你一套 可落地的优化方案。
建议使用 Debian 11+ / 12(Bookworm),获得:
cat /etc/debian_version
编辑:
sudo vim /etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
生效:
ulimit -n
sudo vim /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
应用:
sudo sysctl -p
如果你只是展示文档:
SwaggerUIBundle({
url: "/swagger.yaml",
dom_id: '#swagger-ui',
tryItOutEnabled: false
})
✅ 减少 JS 执行 & 请求
✅ 更安全
server {
listen 80;
server_name api.example.com;
location /swagger/ {
root /var/www;
try_files $uri $uri/ /swagger/index.html;
gzip on;
gzip_types text/html application/javascript application/json;
gzip_min_length 1024;
}
}
效果:
CDN 在 Debian 内网环境可能很慢。
wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.9.0.tar.gz
解压后放到:
/var/www/swagger-ui/
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.api"))
.paths(PathSelectors.any())
.build();
}
✅ 避免扫描整个 classpath
✅ 加快启动速度
springdoc-openapi(替代旧 Swagger)<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.3.0</version>
</dependency>
优点:
❌ 避免:
Map<String, Object>
✅ 使用:
ResponseDTO
java -Xms256m -Xmx512m -XX:+UseG1GC -jar app.jar
NODE_ENV=production
uvicorn main:app --workers 4 --host 0.0.0.0
location /v3/api-docs {
expires 1h;
add_header Cache-Control "public";
}
使用 distroless / slim:
FROM eclipse-temurin:17-jre-slim
✅ 更小
✅ 更快
✅ 更安全
| 优化项 | 启动时间 | 页面加载 |
|---|---|---|
| 未优化 | 6–10s | 2–4s |
| 禁止 Try it out | - | ↓ 30% |
| Gzip | - | ↓ 60% |
| 精简 DTO | ↓ 20% | ↓ 15% |
| 本地 Swagger UI | - | ↓ 40% |
✅ 生产环境关闭 Try it out
✅ 使用本地 Swagger UI + Gzip
✅ 精简 API 模型
✅ 使用 springdoc / FastAPI 等现代方案
✅ Debian 层面调优网络 & 文件句柄
如果你愿意,可以告诉我:
我可以直接给你 针对你项目的优化方案。