Swagger作为API文档工具在Linux平台上的性能优化可以从多个方面入手,以下是一些关键优化策略:
使用Nginx反向代理:
location /swagger/ {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_cache swagger_cache;
proxy_cache_valid 200 302 12h;
gzip on;
gzip_types application/json;
}
启用HTTP/2:减少连接延迟,提高并发性能
精简Swagger UI资源:
const customSwaggerCss = `
/* 自定义精简CSS */
`;
const options = {
customCss: customSwaggerCss,
customSiteTitle: "API Docs",
docExpansion: 'none', // 默认不展开所有文档
filter: true, // 启用搜索过滤
defaultModelsExpandDepth: -1 // 默认不显示模型
};
使用CDN加载资源:
<script src="https://cdn.jsdelivr.net/npm/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@3/swagger-ui.css">
限制API文档扫描范围:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.your.api.package"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
}
使用Swagger静态文档:
# 生成静态JSON文档
java -jar swagger-codegen-cli.jar generate -i http://localhost:8080/v2/api-docs -l swagger2 -o ./swagger-static
# 然后使用Nginx直接提供静态文件
浏览器缓存:
location ~* \.(js|css|png|jpg|jpeg|gif|ico|json)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
}
服务器端缓存:使用Redis缓存生成的Swagger JSON
使用JMeter测试性能:
jmeter -n -t swagger_test.jmx -l result.jtl
分析Swagger端点响应时间:
curl -o /dev/null -s -w "Connect: %{time_connect} TTFB: %{time_starttransfer} Total: %{time_total}\n" http://localhost:8080/v2/api-docs
通过以上优化措施,可以显著提高Linux平台上Swagger的性能表现,特别是在高并发访问场景下。