#!/bin/bash # 测下载吞吐:缓存预热前后对比。 # # 基线(未加缓存头时): # setup.exe 237568 字节 / 13.3s = 17 KB/s (还截断了) # server.zip 214900 字节 / 3.1s = 67 KB/s # watch.apk 201523 字节 / 66.8s = 3 KB/s set -u BASE=https://relay.xxmxxs.top UA='LanRemote/1.8.1' FILES="ykxmz-setup-1.8.1.exe ykxmz-server-1.8.1.zip ykxmz-watch-1.8.1.apk" echo "════════ 1. 预热:每个文件先请求一次,把内容推进 Cloudflare 缓存 ════════" for f in $FILES; do # 只取前 1 字节,避免真的下载 15 MB st=$(curl -s -o /dev/null -w '%{http_code}' -r 0-0 --max-time 60 \ -H "User-Agent: $UA" "$BASE/download/$f") cf=$(curl -s -D - -o /dev/null -r 0-0 --max-time 60 -H "User-Agent: $UA" \ "$BASE/download/$f" 2>/dev/null | tr -d '\r' | grep -i '^cf-cache-status' | awk '{print $2}') printf " %-30s HTTP %s cf-cache-status=%s\n" "$f" "$st" "${cf:-无}" done echo echo " 等 5 秒让边缘缓存落定…" sleep 5 echo echo "════════ 2. 正式下载(完整文件,量吞吐)════════" total_ok=0 for f in $FILES; do rm -f /tmp/dl.bin out=$(curl -s -o /tmp/dl.bin -D /tmp/dl.hdr -w '%{http_code} %{size_download} %{time_total}' \ --max-time 240 -H "User-Agent: $UA" "$BASE/download/$f") code=$(echo "$out" | awk '{print $1}') size=$(echo "$out" | awk '{print $2}') secs=$(echo "$out" | awk '{print $3}') cf=$(grep -i '^cf-cache-status' /tmp/dl.hdr | tr -d '\r' | awk '{print $2}') age=$(grep -i '^age:' /tmp/dl.hdr | tr -d '\r' | awk '{print $2}') kbps=$(echo "$secs $size" | awk '{if ($1 > 0) printf "%.0f", $2/$1/1024; else print 0}') printf " %-30s HTTP %-4s %9s 字节 %6.1fs %6s KB/s cf=%s age=%s\n" \ "$f" "$code" "$size" "$secs" "$kbps" "${cf:-无}" "${age:-无}" [ "$code" = "200" ] && total_ok=$((total_ok+1)) done echo " 成功 $total_ok/3" echo echo "════════ 3. 再下一次(应该全 HIT,更快)════════" for f in $FILES; do rm -f /tmp/dl.bin out=$(curl -s -o /tmp/dl.bin -D /tmp/dl.hdr -w '%{http_code} %{size_download} %{time_total}' \ --max-time 240 -H "User-Agent: $UA" "$BASE/download/$f") code=$(echo "$out" | awk '{print $1}') size=$(echo "$out" | awk '{print $2}') secs=$(echo "$out" | awk '{print $3}') cf=$(grep -i '^cf-cache-status' /tmp/dl.hdr | tr -d '\r' | awk '{print $2}') kbps=$(echo "$secs $size" | awk '{if ($1 > 0) printf "%.0f", $2/$1/1024; else print 0}') printf " %-30s HTTP %-4s %9s 字节 %6.1fs %6s KB/s cf=%s\n" \ "$f" "$code" "$size" "$secs" "$kbps" "${cf:-无}" done echo echo "════════ 4. 对比基线 ════════" echo " 基线: setup 17 KB/s(截断)· server 67 KB/s · apk 3 KB/s"