From 5fc2bf764ab68c03528807164751c5a1cdd4d8da Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Tue, 30 Jun 2026 16:57:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Qiniu=20=E8=AF=BB=E5=8F=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20CDN=20404=20=E6=97=B6=E5=9B=9E=E9=80=80=E6=BA=90?= =?UTF-8?q?=E7=AB=99=E7=9B=B4=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../par/core/storage/QiniuStorageService.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/par-core/src/main/java/com/par/core/storage/QiniuStorageService.java b/par-core/src/main/java/com/par/core/storage/QiniuStorageService.java index ebde71f..084a0f5 100644 --- a/par-core/src/main/java/com/par/core/storage/QiniuStorageService.java +++ b/par-core/src/main/java/com/par/core/storage/QiniuStorageService.java @@ -70,15 +70,27 @@ public class QiniuStorageService implements StorageService { @Override public String read(String path) { ensureInit(); + // 先走 CDN,404 则回退源站直读 + String content = readFromUrl(cdnDomain + "/" + path, path); + if (content != null) return content; + // CDN 缓存未命中,走 Qiniu 源站 + String sourceUrl = "https://" + bucket + ".qiniucdn.com/" + path; + String privateUrl = auth.privateDownloadUrl(sourceUrl, 3600); + content = readFromUrl(privateUrl, path); + if (content != null) return content; + log.warn("Qiniu 读取失败 {}: CDN+源站均不可用", path); + return null; + } + + private String readFromUrl(String url, String path) { try { - String url = cdnDomain + "/" + path; var req = HttpRequest.newBuilder().uri(URI.create(url)) .timeout(Duration.ofSeconds(10)).GET().build(); var resp = httpClient.send(req, HttpResponse.BodyHandlers.ofString()); if (resp.statusCode() == 200) return resp.body(); - log.warn("Qiniu 读取失败 {}: HTTP {}", path, resp.statusCode()); + log.debug("Qiniu CDN miss {}: HTTP {}", path, resp.statusCode()); } catch (Exception e) { - log.warn("Qiniu 读取失败 {}: {}", path, e.getMessage()); + log.debug("Qiniu 读取异常 {}: {}", path, e.getMessage()); } return null; }