diff --git a/Merge/back_rhj/app/user_post_graph.txt b/Merge/back_rhj/app/user_post_graph.txt
index 23da7af..f8ef7df 100644
--- a/Merge/back_rhj/app/user_post_graph.txt
+++ b/Merge/back_rhj/app/user_post_graph.txt
@@ -1,11 +1,12 @@
-0	0 0 1 1 0 1 0 41 31 61 51 11 21	1749827292 1749953091 1749953091 1749953480 1749953480 1749954059 1749954059 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	1 1 2 2 1 2 1 5 2 2 1 5 1
-1	1 42 32 52 0 4 12 22	1749827292 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	5 1 5 2 2 5 1 2
-2	6 5 6 5 43 33 53 1 13 23	1749953091 1749953091 1749953480 1749953480 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	2 1 2 1 2 1 5 5 2 5
-3	2 2 0 44 34 54 14 24	1749953091 1749953480 1749954059 1749955282 1749955282 1749955282 1749955282 1749955282	2 2 2 5 2 1 5 1
-4	1 45 35 55 15 5 25	1749954059 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	5 1 5 2 1 5 2
-5	36 46 56 2 6 16 26	1749955282 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	1 2 5 5 1 2 5
-6	37 47 57 7 17 27	1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	2 5 1 2 5 1
-7	38 48 58 3 8 18 28	1749955282 1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	5 1 2 2 5 1 2
-8	39 49 59 9 19 29	1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	1 2 5 1 2 5
-9	40 50 60 10 30 20	1749955282 1749955282 1749955282 1749955282 1749955282 1749955282	2 5 1 2 1 5
+0	0 0 1 1 0 1 0 11	1749827292 1749953091 1749953091 1749953480 1749953480 1749954059 1749954059 1749955282	1 1 2 2 1 2 1 5
+1	1 4 0 12	1749827292 1749955282 1749955282 1749955282	5 5 2 1
+2	6 5 6 5 13 1 0 0 1 1 2	1749953091 1749953091 1749953480 1749953480 1749955282 1749955282 1750372189 1750372215 1750372231 1750372241 1750372258	2 1 2 1 2 5 3 2 3 2 2
+3	2 2 0	1749953091 1749953480 1749954059	2 2 2
+4	1 5	1749954059 1749955282	5 5
+5	2 6	1749955282 1749955282	5 1
+6	7	1749955282	2
+7	3 8	1749955282 1749955282	2 5
+8	9	1749955282	1
+9	10	1749955282	2
 10	12	1749894174	5
+11	1 4 7 0 2 13 4 11	1750372862 1750372873 1750373008 1750373592 1750373596 1750374164 1750374867 1750374871	3 3 3 2 2 2 2 2
diff --git a/WZY/xhs_front/src/components/HomeFeed.jsx b/WZY/xhs_front/src/components/HomeFeed.jsx
index d906e33..382c942 100644
--- a/WZY/xhs_front/src/components/HomeFeed.jsx
+++ b/WZY/xhs_front/src/components/HomeFeed.jsx
@@ -20,24 +20,50 @@
     async function loadPosts() {
       try {
         const list = await fetchPosts()  // [{id, title, heat, created_at}, …]
-        // 为了拿到 media_urls 和 user_id，这里再拉详情
-        const detailed = await Promise.all(
-          list.map(async p => {
-            const d = await fetchPost(p.id)
-            return {
-              id:     d.id,
-              title:  d.title,
-              author: `作者 ${d.user_id}`,
-              avatar: `https://i.pravatar.cc/40?img=${d.user_id}`,
-              img:    d.media_urls?.[0] || '', // 用第一张媒体作为封面
-              likes:  d.heat
-            }
-          })
-        )
-        setItems(detailed)
+        
+        // 第一轮：立即展示基础信息
+        const basicItems = list.map(p => ({
+          id:     p.id,
+          title:  p.title,
+          author: `作者 ${p.user_id || 'unknown'}`,
+          avatar: `https://i.pravatar.cc/40?img=${p.user_id || 1}`,
+          img:    '', // 暂时为空
+          likes:  p.heat || 0,
+          loading: true // 标记图片正在加载
+        }))
+        
+        setItems(basicItems)
+        setLoading(false) // 基础内容已加载完成
+        
+        // 第二轮：异步加载详情和图片
+        basicItems.forEach(async (item, index) => {
+          try {
+            const detail = await fetchPost(item.id)
+            setItems(prevItems => 
+              prevItems.map(prevItem => 
+                prevItem.id === item.id 
+                  ? {
+                      ...prevItem,
+                      img: detail.media_urls?.[0] || '',
+                      loading: false
+                    }
+                  : prevItem
+              )
+            )
+          } catch (e) {
+            // 单个图片加载失败不影响其他
+            setItems(prevItems => 
+              prevItems.map(prevItem => 
+                prevItem.id === item.id 
+                  ? { ...prevItem, loading: false }
+                  : prevItem
+              )
+            )
+          }
+        })
+        
       } catch (e) {
         setError(e.message)
-      } finally {
         setLoading(false)
       }
     }
@@ -69,7 +95,11 @@
         <div className="feed-grid">
           {items.map(item => (
             <div key={item.id} className="feed-card">
-              <img className="card-img" src={item.img} alt={item.title} />
+              {item.loading ? (
+                <div className="card-img-placeholder">图片加载中...</div>
+              ) : (
+                <img className="card-img" src={item.img} alt={item.title} />
+              )}
               <h3 className="card-title">{item.title}</h3>
               <div className="card-footer">
                 <div className="card-author">
