通常情况下, KSpeeder 下载失败都是由于临时的网络问题或者磁盘缓存不一致导致的问题,我们暂时还没有很好的办法系统解决此问题,因此可以先通过两种方法解决:
- 清理缓存
- 重新启动 KSpeeder
以上方式能解决 99% 的下载失败问题,如果还不能解决问题,可以联系我们。
清理缓存
方法一:通过管理界面清理缓存
- 打开管理界面( 通常是 http://localhost:5003 或你安装 kspeeder 机器的 IP 地址 )后,点击 UI 上的清理缓存即可
方法2️:使用冷冰同学的一键清理脚本
感谢热心用户 冷冰 同学的贡献!冷冰友情提示:
多人共用服务 请小心使用
引起打架斗殴 作者概不负责
Bash 脚本(将脚本内容复制到你的设备,保存为 ksp-clean, 然后添加可执行权限,按上面的帮助执行 ):
#!/usr/bin/env bash
# KSpeeder 缓存清理脚本
#
# 用法: ksp-clean [host] [选项]
#
# 选项:
# -v, --verbose 显示详细信息
# -h, --help 显示帮助信息
#
# 参数:
# host 目标主机 (默认: registry.linkease.net:5003)
#
# 示例:
# ksp-clean
# ksp-clean -v
# ksp-clean registry.example.com:8080 --verbose
set -euo pipefail
GREEN='\033[32m'
RED='\033[31m'
RESET='\033[0m'
VERBOSE=false
HOST="registry.linkease.net:5003"
for arg in "$@"; do
case "$arg" in
-h|--help)
sed -n '2,16p' "$0" | sed 's/^# //; s/^#$//'
exit 0
;;
-v|--verbose)
VERBOSE=true
;;
*)
if [[ ! "$arg" =~ ^- ]]; then
HOST="$arg"
fi
;;
esac
done
URL="http://${HOST}/api/cache/cleanup"
REFERER="http://${HOST}/"
ORIGIN="http://${HOST}"
RESPONSE=$(curl --url "${URL}" \
-X 'POST' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: zh-CN,zh;q=0.9,zh-Hans;q=0.8' \
-H 'Content-Length: 0' \
-H "Origin: ${ORIGIN}" \
-H 'Proxy-Connection: keep-alive' \
-H "Referer: ${REFERER}" \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36' \
--insecure \
--silent \
--show-error)
STATUS=$(echo "$RESPONSE" | jq -r '.status // "error"')
if [[ "$STATUS" == "ok" ]]; then
echo -e "${GREEN}✓ 清理成功${RESET}"
if [[ "$VERBOSE" == true ]]; then
echo "$RESPONSE" | jq -r '
" 缓存路径: \(.cache_path)",
" 删除条目: \(.deleted_entries)",
" 跳过条目: \(.skipped_entries)",
" 错误数: \(.errors)",
" 耗时: \(.took_ms)ms"
'
fi
exit 0
else
echo -e "${RED}✗ 清理失败${RESET}"
echo "$RESPONSE" | jq '.'
exit 1
fi
node 脚本(如果你有 nodejs 环境,也可以用 node 版本,内容保存为 ksp-clean,添加可执行权限,然后执行即可):
#!/usr/bin/env node
const args = process.argv.slice(2);
if (args.includes('-h') || args.includes('--help')) {
console.log(`用法: ksp-clean [host] [选项]
选项:
-v, --verbose 显示详细信息
-h, --help 显示帮助信息
参数:
host 目标主机 (默认: registry.linkease.net:5003)
示例:
ksp-clean
ksp-clean -v
ksp-clean registry.example.com:8080 --verbose`);
process.exit(0);
}
const verbose = args.includes('-v') || args.includes('--verbose');
const host = args.find(arg => !arg.startsWith('-')) || 'registry.linkease.net:5003';
const GREEN = '\x1b[32m';
const RED = '\x1b[31m';
const RESET = '\x1b[0m';
async function main() {
const url = `http://${host}/api/cache/cleanup`;
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,zh-Hans;q=0.8',
'proxy-connection': 'keep-alive',
'Referer': `http://${host}/`
}
});
const data = await res.json();
if (data.status === 'ok') {
console.log(`${GREEN}✓ 清理成功${RESET}`);
if (verbose) {
console.log(` 缓存路径: ${data.cache_path}`);
console.log(` 删除条目: ${data.deleted_entries}`);
console.log(` 跳过条目: ${data.skipped_entries}`);
console.log(` 错误数: ${data.errors}`);
console.log(` 耗时: ${data.took_ms}ms`);
}
process.exit(0);
} else {
console.log(`${RED}✗ 清理失败${RESET}`);
console.log(JSON.stringify(data, null, 2));
process.exit(1);
}
} catch (err) {
console.log(`${RED}✗ 请求失败${RESET}`);
console.error(err.message);
process.exit(1);
}
}
main();

