SmartPagerankSearch / DIAGNOSE_PARTICLE_EFFECT.md
GitHub Action
Sync from GitHub Actions (Clean Commit)
7f22d3c

粒子效果问题诊断和修复指南

🔍 问题诊断

如果您在服务器上推送后仍然看不到粒子效果,请按照以下步骤诊断:

步骤 1: 检查访问路径

服务器在用户模式下提供:

  • 根路径 /static/index.html
  • 静态文件路径 /static/index.htmlstatic/index.html

请确保访问正确的路径

  • http://your-server:8000/
  • http://your-server:8000/static/index.html

步骤 2: 清除浏览器缓存

硬刷新页面

  • Windows/Linux: Ctrl + Shift + R
  • Mac: Cmd + Shift + R

或者:

  • Chrome: 打开开发者工具(F12)→ 右键刷新按钮 → "清空缓存并硬性重新加载"
  • Firefox: Ctrl + Shift + Delete → 清除缓存

步骤 3: 检查浏览器控制台

  1. 打开浏览器开发者工具(F12)
  2. 切换到 Console 标签
  3. 刷新页面
  4. 查看是否有错误信息

应该看到

  • Particle network initialized successfully
  • ❌ 如果看到错误,请记录错误信息

步骤 4: 检查 Canvas 元素

在浏览器控制台中输入:

// 检查Canvas元素是否存在
document.getElementById('particle-canvas')

// 检查Canvas尺寸
const canvas = document.getElementById('particle-canvas');
if (canvas) {
    console.log('Canvas尺寸:', canvas.width, 'x', canvas.height);
    console.log('Canvas样式:', window.getComputedStyle(canvas).display);
} else {
    console.error('Canvas元素未找到!');
}

步骤 5: 测试粒子效果

访问测试页面:http://your-server:8000/static/fix_particle_effect.html

如果测试页面可以显示粒子效果,说明:

  • ✅ JavaScript 代码正常
  • ✅ 浏览器支持 Canvas
  • ❌ 问题在于 static/index.html 的集成

🔧 可能的问题和解决方案

问题 1: 浏览器缓存

症状:本地能看到效果,但服务器上看不到

解决方案

# 在服务器上添加缓存控制头
# 或者修改 web_server.py 添加 no-cache 头

问题 2: JavaScript 执行顺序

症状:控制台有错误,Canvas 元素未找到

解决方案: 已修复 - 代码现在会在 DOM 加载完成后执行

问题 3: 脚本被阻塞

症状:页面加载很慢,粒子效果不显示

解决方案: 检查是否有其他 JavaScript 错误阻塞了执行

问题 4: Canvas 被其他元素覆盖

症状:背景是黑色但没有粒子

解决方案: 检查 CSS z-index,确保 Canvas 在最底层

🛠️ 修复步骤

修复 1: 添加缓存控制(推荐)

修改 web_server.py,为静态文件添加 no-cache 头:

from fastapi.responses import FileResponse
from fastapi import Response

@app.get("/")
async def get_user_ui():
    response = FileResponse('static/index.html')
    response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "0"
    return response

修复 2: 验证文件内容

在服务器上检查文件:

# 检查文件是否存在
ls -la static/index.html

# 检查是否包含粒子效果代码
grep -c "particle-canvas" static/index.html
grep -c "Particle network initialized" static/index.html

修复 3: 强制重新加载

如果使用 nginx 或其他反向代理,确保:

  • 清除代理缓存
  • 重启服务

📋 检查清单

在报告问题前,请确认:

  • 访问的是正确的 URL(//static/index.html
  • 已硬刷新页面(Ctrl+Shift+R)
  • 检查了浏览器控制台是否有错误
  • Canvas 元素存在于 DOM 中
  • 测试页面 fix_particle_effect.html 可以显示粒子效果
  • 服务器上的文件已更新(检查文件修改时间)

🔍 调试命令

在浏览器控制台中运行以下命令进行调试:

// 1. 检查Canvas元素
const canvas = document.getElementById('particle-canvas');
console.log('Canvas:', canvas);
console.log('Canvas尺寸:', canvas?.width, 'x', canvas?.height);

// 2. 检查Canvas上下文
if (canvas) {
    const ctx = canvas.getContext('2d');
    console.log('Canvas上下文:', ctx);
    
    // 手动绘制测试
    ctx.fillStyle = 'rgba(100, 200, 255, 0.8)';
    ctx.fillRect(100, 100, 50, 50);
    console.log('如果看到蓝色方块,说明Canvas工作正常');
}

// 3. 检查页面加载状态
console.log('DOM状态:', document.readyState);

// 4. 检查是否有JavaScript错误
window.onerror = function(msg, url, line) {
    console.error('JavaScript错误:', msg, 'at', url, ':', line);
    return false;
};

🚀 快速验证

  1. 访问测试页面/static/fix_particle_effect.html
  2. 如果测试页面有效:问题在于 index.html 的集成
  3. 如果测试页面无效:浏览器或服务器环境问题

📞 如果问题仍然存在

请提供以下信息:

  1. 浏览器类型和版本
  2. 控制台错误信息(如果有)
  3. 访问的URL
  4. 测试页面的结果(fix_particle_effect.html