feat(internal/handler): optimize image request handling by setting optimized Accept headers and Cloudflare-specific headers

This commit is contained in:
wood chen 2024-11-17 10:41:26 +08:00
parent 2ce1b02df9
commit 74189ed602

View File

@ -111,19 +111,38 @@ func (h *ProxyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
copyHeader(proxyReq.Header, r.Header) copyHeader(proxyReq.Header, r.Header)
// 特别处理图片请求 // 特别处理图片请求
if utils.IsImageRequest(r.URL.Path) { // if utils.IsImageRequest(r.URL.Path) {
// 获取 Accept 头 // // 获取 Accept 头
accept := r.Header.Get("Accept") // accept := r.Header.Get("Accept")
// 根据 Accept 头设置合适的图片格式 // // 根据 Accept 头设置合适的图片格式
if strings.Contains(accept, "image/avif") { // if strings.Contains(accept, "image/avif") {
proxyReq.Header.Set("Accept", "image/avif") // proxyReq.Header.Set("Accept", "image/avif")
} else if strings.Contains(accept, "image/webp") { // } else if strings.Contains(accept, "image/webp") {
proxyReq.Header.Set("Accept", "image/webp") // proxyReq.Header.Set("Accept", "image/webp")
// }
// // 设置 Cloudflare 特定的头部
// proxyReq.Header.Set("CF-Image-Format", "auto") // 让 Cloudflare 根据 Accept 头自动选择格式
// }
// 特别处理图片请求
if utils.IsImageRequest(r.URL.Path) {
// 设置优化的 Accept 头
accept := r.Header.Get("Accept")
if accept != "" {
proxyReq.Header.Set("Accept", accept)
} else {
proxyReq.Header.Set("Accept", "image/avif,image/webp,image/jpeg,image/png,*/*;q=0.8")
} }
// 设置 Cloudflare 特定的头部 // 设置 Cloudflare 特定的头部
proxyReq.Header.Set("CF-Image-Format", "auto") // 让 Cloudflare 根据 Accept 头自动选择格式 proxyReq.Header.Set("CF-Accept-Content", "image/avif,image/webp")
proxyReq.Header.Set("CF-Optimize-Images", "on")
// 删除可能影响缓存的头部
proxyReq.Header.Del("If-None-Match")
proxyReq.Header.Del("If-Modified-Since")
proxyReq.Header.Set("Cache-Control", "no-cache")
} }
// 设置其他必要的头部 // 设置其他必要的头部