在 Debian 上部署的 Swagger(Swagger UI / springdoc-openapi / swagger-core 等)访问慢,一般不是 Debian 系统本身的问题,而是网络、资源加载、接口数据量、配置这几类原因。下面按常见场景给你一套排查 + 优化清单。
典型表现:
swagger-ui-bundle.js / swagger-ui.css 很大、很慢✅ 多半是 CDN / 静态资源问题
典型表现:
✅ 多半是 接口元数据太大 / 后端慢
✅ 那是业务接口慢,不是 Swagger 问题
Debian 服务器可能:
springdoc:
swagger-ui:
url: /v3/api-docs
并把 Swagger UI 静态资源放本地:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
</dependency>
默认已经是本地了,但不要手动引 CDN
下载:
wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v5.x.x.zip
放到:
/var/www/html/swagger/
Nginx:
location /swagger/ {
root /var/www/html;
index index.html;
}
@Operation(hidden = true)
或:
@RestController
@Tag(hidden = true)
或只扫描指定包:
springdoc:
packages-to-scan: com.xxx.api
springdoc:
api-docs:
enabled: true
swagger-ui:
doc-expansion: none
default-models-expand-depth: -1
try-it-out-enabled: false
/v3/api-docs/user/v3/api-docs/order前端分别加载,避免一次性几十 MB JSON
gzip on;
gzip_types application/json text/css application/javascript;
gzip_min_length 1024;
验证:
curl -I -H "Accept-Encoding: gzip" http://ip/swagger-ui-bundle.js
location ~* \.(js|css|png)$ {
expires 7d;
add_header Cache-Control "public";
}
Springdoc 默认是懒加载 + 缓存,但:
可预热:
@PostConstruct
public void init() {
openAPIService.getOpenApi();
}
# 看接口响应时间
curl -w "%{time_total}\n" http://localhost/v3/api-docs
# 看静态资源
curl -w "%{time_total}\n" http://localhost/swagger-ui-bundle.js
# 看系统资源
top
free -h
Debian 上 Swagger 慢,90% 是:
- 外网 CDN 慢 → 换本地
- API 文档太大 → 精简接口
- 没开 gzip → Nginx 开
如果你能告诉我:
我可以直接给你一套针对性配置。