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">
