Skip to main content

กำลังโหลด...

Southern Whale
รับ SEO Audit ฟรี
Web Performance19 นาทีอ่าน

LCP คืออะไร? Largest Contentful Paint — วิธีลด LCP ให้ < 2.5s ปี 2026 | Southern Whale

คู่มือ LCP (Largest Contentful Paint) ครบ — 4 องค์ประกอบ (TTFB + Resource Load Delay + Load Time + Render Delay), 10 วิธีปรับ LCP, ตัวอย่างเว็บภูเก็ต LCP 5.2s → 1.8s

LCP Largest Contentful Paint diagram แสดง 4 phases ของการโหลด element ใหญ่ที่สุด

ทำไมคุณต้องสนใจ LCP ในปี 2026

ลองนึกภาพว่าคุณกำลังจะซื้อตั๋วเครื่องบินไปภูเก็ต คุณเปิดเว็บไซต์สายการบินขึ้นมา แต่หน้าจอกลับว่างเปล่าอยู่เกือบ 5 วินาที กว่าภาพโปรโมชั่นและปุ่ม “จองตั๋ว” จะปรากฏ — ในขณะที่หน้าจอนั้นมืดมิด คุณอาจจะกดปิดไปแล้วหรือกลับไปดูแอปคู่แข่งแทน นี่คือสิ่งที่ LCP (Largest Contentful Paint) วัด: เวลาที่ผู้ใช้รอจน “เห็นเนื้อหาหลัก” ของหน้าเว็บ

ในปี 2026 Google ใช้ LCP เป็นหนึ่งในสามตัวชี้วัด Core Web Vitals (อีกสองตัวคือ INP และ CLS) ที่ส่งผลต่ออันดับ SEO โดยตรง ถ้า LCP ของคุณเกิน 2.5 วินาที — คุณกำลังเสียทั้งผู้ใช้และอันดับ Google ไปพร้อมกัน

บทความนี้คุณจะได้เรียนรู้ทุกอย่างเกี่ยวกับ LCP ตั้งแต่นิยาม วิธีวัด สูตรคำนวณ 4 องค์ประกอบ ไปจนถึง 10 เทคนิคที่ทีม Southern Whale ใช้ลด LCP เว็บลูกค้าจาก 5+ วินาที ให้เหลือต่ำกว่า 2 วินาที — พร้อมตัวอย่างจริงและโค้ดที่คุณนำไปใช้ได้ทันที


LCP คืออะไร? และอะไรคือ “Largest Element”

LCP (Largest Contentful Paint) คือเมตริกที่วัดระยะเวลาตั้งแต่ผู้ใช้เริ่มโหลดหน้าเว็บ จนถึงตอนที่ “Element ที่ใหญ่ที่สุดที่มองเห็นในหน้าจอแรก (viewport)” ถูก render เสร็จสมบูรณ์

LCP ถูกคิดค้นโดยทีม Chrome ในปี 2019 และกลายเป็น Core Web Vitals อย่างเป็นทางการในปี 2020 — เพื่อแก้ปัญหาที่ FCP (First Contentful Paint) วัดแค่ “พิกเซลแรก” ซึ่งบางครั้งเป็นแค่ background สีเทาเปล่า ๆ ไม่สื่อถึงประสบการณ์จริงของผู้ใช้

อะไรคือ “Largest Element” ที่ LCP สนใจ?

Chrome จะติดตามและจัดอันดับ element ในหน้าจอแรก แล้วเลือกตัวที่ใหญ่ที่สุด (วัดจากขนาดที่มองเห็น) ประเภท element ที่นับเป็น LCP candidate ได้แก่:

  1. <img> element — รูปภาพปกติ
  2. <image> ภายใน <svg> — รูปใน SVG
  3. <video> element — โดยใช้ poster image
  4. <element> ที่มี background-image ผ่าน url() ใน CSS
  5. Text block — block-level element ที่มีข้อความ (เช่น <h1>, <p> ขนาดใหญ่)

ตัวอย่างจริง: เว็บโรงแรมในภูเก็ต

เว็บโรงแรมส่วนใหญ่ในภูเก็ตมี Hero banner เป็นรูปวิวทะเลขนาดใหญ่ — รูปนี้แหละที่มักเป็น LCP element เพราะมันใหญ่ที่สุดที่ผู้ใช้เห็นทันทีเมื่อเปิดเว็บ ถ้ารูปโหลด 5 วินาที = LCP 5 วินาที = SEO score แย่


เกณฑ์ LCP ตาม Google: Good, Needs Improvement, Poor

Google กำหนดเกณฑ์ LCP ที่ชัดเจน โดยวัดจาก 75th percentile ของผู้ใช้จริง (ไม่ใช่แค่ Lab Data) ดังนี้:

ระดับ LCP ความหมาย ผลกระทบ SEO
Good (สีเขียว) ≤ 2.5 วินาที ดีมาก ผู้ใช้รู้สึกเร็ว บูสต์ ranking
Needs Improvement (สีเหลือง) 2.5 - 4.0 วินาที ปานกลาง ผู้ใช้เริ่มหงุดหงิด ไม่ช่วย ไม่ทำร้าย
Poor (สีแดง) > 4.0 วินาที ช้า ผู้ใช้กดออก ลด ranking

เป้าหมายที่ควรตั้งไว้: LCP < 2.5 วินาที สำหรับทุก device โดยเฉพาะมือถือบน 4G

ข้อสำคัญที่ต้องเข้าใจ: Google ใช้ Field Data จาก Chrome User Experience Report (CrUX) ไม่ใช่ Lab Data จาก Lighthouse เพราะ Lab Data เป็นการจำลองในห้องทดลอง แต่ผู้ใช้จริงอยู่ใน network และ device ที่หลากหลาย — เว็บที่ Lighthouse ได้ 95 คะแนนอาจจะมี Field LCP แย่ก็ได้


4 องค์ประกอบของ LCP: สูตรคำนวณ + Breakdown

LCP ไม่ใช่เมตริกตัวเดียว แต่เป็นผลรวมของ 4 ช่วงเวลา (sub-parts) ที่ Google ระบุไว้ในเอกสารทางการ:

LCP = TTFB + Resource Load Delay + Resource Load Time + Element Render Delay

ลองมาเจาะแต่ละองค์ประกอบ:

1. TTFB (Time to First Byte)

TTFB = เวลาตั้งแต่ browser ส่ง request จน byte แรกของ HTML กลับมา

[ผู้ใช้คลิก] → DNS lookup → TCP/TLS → Server processing → Byte แรกของ HTML
                          ← TTFB ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━→
  • Target: < 800ms (Google แนะนำ < 600ms สำหรับเว็บที่อยากได้ Good LCP)
  • ส่วนที่ส่งผลต่อ TTFB: DNS, CDN, server location, server response time, database query, cache hit/miss

ตัวอย่าง: ถ้าคุณ host เว็บที่ AWS Singapore แต่ผู้ใช้อยู่ภูเก็ต ใช้ ISP True — TTFB อาจสูงถึง 300-500ms เพียงเพราะระยะทางกับ network latency

2. Resource Load Delay

Resource Load Delay = เวลาตั้งแต่ TTFB เสร็จ จนถึงตอนที่ browser เริ่มดาวน์โหลด LCP resource (เช่น รูป hero)

HTML ถูกโหลด → Browser parse HTML → ค้นเจอ <img src="hero.jpg"> → เริ่ม download
                                                                  ← Resource Load Delay
  • Target: สั้นที่สุดเท่าที่จะทำได้ (< 200ms)
  • สิ่งที่ทำให้ Delay สูง: รูป hero อยู่ใน CSS background (browser ต้องโหลด CSS ก่อนถึงเจอ) หรือ JavaScript inject element เข้ามา

สำคัญ: Resource Load Delay เป็นจุดที่คนมองข้ามมากที่สุด — คุณสามารถลด Delay ได้ทันทีด้วย <link rel="preload"> หรือ fetchpriority="high"

3. Resource Load Time

Resource Load Time = เวลาที่ใช้ดาวน์โหลด LCP resource (รูป/วิดีโอ) เสร็จ

เริ่ม download → ┃━━━━━━━━━━━━━━━━━━━━━━━━━━━┃ → download เสร็จ
                  ← Resource Load Time ━━━━━━━━━→
  • Target: < 1,000ms
  • สิ่งที่ส่งผลต่อ Load Time: ขนาดไฟล์ (KB), network speed, ใช้ CDN หรือไม่, image format (WebP/AVIF ลดได้ 30-50%)

4. Element Render Delay

Element Render Delay = เวลาตั้งแต่ resource โหลดเสร็จ จนถึงตอนที่ browser render element นั้นบนหน้าจอจริง

รูปโหลดเสร็จ → Browser ต้อง parse + paint + composite → ปรากฏบนหน้าจอ
                ← Element Render Delay ━━━━━━━━━━━━━━━→
  • Target: < 100ms
  • สิ่งที่ทำให้ Delay สูง: Long-running JavaScript บน main thread, large CSS file, font ที่ยังไม่โหลดเสร็จ (text แสดงไม่ได้)

ตัวอย่าง Breakdown LCP 4.5s

Phase เวลา สัดส่วน
TTFB 1,200ms 27%
Resource Load Delay 800ms 18%
Resource Load Time 2,100ms 47%
Element Render Delay 400ms 8%
รวม LCP 4,500ms 100%

จากตัวอย่างนี้ ปัญหาใหญ่สุดคือ Resource Load Time (47%) — แปลว่ารูป hero น่าจะใหญ่เกินไป ควร compress + ใช้ WebP


LCP Candidate Elements: ตัวไหนที่ Browser เลือก?

Chrome จะติดตาม element ที่ “วาดบนหน้าจอ” และ “อยู่ใน viewport” แล้วเลือกตัวที่ใหญ่ที่สุดเป็น LCP element หลังจาก:

  • ผู้ใช้ scroll
  • ผู้ใช้ interact (กดปุ่ม, พิมพ์)
  • หรือเมื่อ page โหลดเสร็จ 100%

Element ที่นับเป็น LCP ได้:

1. <img> element

<img src="/hero.webp" alt="วิวหาดป่าตอง" width="1200" height="630">

นี่คือกรณีที่พบบ่อยที่สุด — Hero image เป็น LCP element

2. <video> ที่มี poster

<video poster="/video-poster.webp" controls>
  <source src="/intro.mp4" type="video/mp4">
</video>

LCP จะนับเป็นเวลาที่ poster image แสดง ไม่ใช่ตัววิดีโอเริ่มเล่น

3. CSS Background Image

<div class="hero" style="background-image: url('/banner.jpg')"></div>

นี่เป็น anti-pattern ที่อันตราย เพราะ browser ต้องรอ:

  1. โหลด HTML เสร็จ
  2. โหลด CSS เสร็จ
  3. Parse CSS เจอ url()
  4. เริ่มโหลดรูป

แปลว่า Resource Load Delay จะสูงมาก แนะนำให้เปลี่ยนเป็น <img> ตามด้วย CSS positioning แทน

4. Text Block

<h1 style="font-size: 96px;">ยินดีต้อนรับสู่ Southern Whale</h1>

ถ้าหน้าเว็บไม่มีรูป — text ขนาดใหญ่อาจกลายเป็น LCP element แทน

Element ที่ ไม่ นับเป็น LCP:

  • Element ที่ครอบคลุม viewport ทั้งหมด (เช่น full-page background gradient)
  • Iframe content
  • <image> ที่มี opacity = 0
  • Element ที่อยู่นอก viewport
  • SVG element (ส่วน path, rect — ยกเว้น <image> ภายใน)

10 วิธีปรับ LCP ให้ < 2.5 วินาที (พร้อมโค้ด)

ทีม Southern Whale ใช้ 10 เทคนิคนี้กับเว็บลูกค้าทุกราย ลด LCP เฉลี่ย 50-70%

1. ใช้ CDN (Cloudflare/Fastly/Akamai)

CDN จะช่วยให้ resource ถูก cache ที่ edge server ใกล้ผู้ใช้ — ลด TTFB และ Resource Load Time ได้ทันที 30-60%

สำหรับเว็บลูกค้าในไทย:

  • Cloudflare มี edge ที่ Bangkok และ Singapore → latency 10-30ms
  • Fastly มี POP ที่ Singapore → latency 30-50ms
  • AWS CloudFront มี edge ที่ Bangkok → latency 5-20ms

ดูคู่มือเต็มที่ Cloudflare Complete Guide 2026 ของเรา ครอบคลุมการตั้งค่า CDN + Cache Rules + Image Optimization

วิธีนี้บอก browser ให้เริ่มดาวน์โหลด LCP resource ทันทีที่เจอใน HTML ไม่ต้องรอ parse จนถึงจุดที่ใช้

<head>
  <!-- Preload LCP image ทันทีที่ browser parse <head> -->
  <link rel="preload"
        as="image"
        href="/hero.webp"
        fetchpriority="high"
        type="image/webp">
</head>
<body>
  <img src="/hero.webp" alt="Hero" width="1200" height="630">
</body>

ผลที่ได้: ลด Resource Load Delay ได้ 200-800ms

3. ใช้ fetchpriority="high"

Attribute ใหม่ใน Chrome (รองรับตั้งแต่ Chrome 101) บอก browser ว่ารูปนี้ “สำคัญที่สุด” ควรโหลดก่อนทุกอย่าง

<img src="/hero.webp"
     alt="Hero"
     width="1200"
     height="630"
     fetchpriority="high"
     decoding="async">

ข้อดี: ไม่ต้องใช้ <link rel="preload"> ที่อาจ over-preload ทรัพยากรอื่น

4. Responsive Image (srcset + sizes)

อย่าโหลดรูป 2400px ให้ผู้ใช้มือถือที่จอกว้าง 375px — มันเปลือง bandwidth และทำให้ Resource Load Time สูง

<img src="/hero-800.webp"
     srcset="/hero-400.webp 400w,
             /hero-800.webp 800w,
             /hero-1200.webp 1200w,
             /hero-2400.webp 2400w"
     sizes="(max-width: 600px) 400px,
            (max-width: 1000px) 800px,
            1200px"
     alt="Hero"
     width="1200"
     height="630">

ผลที่ได้: มือถือโหลดแค่ไฟล์ 400px (ขนาด ~40KB) แทนที่จะโหลด 2400px (ขนาด ~400KB)

5. ใช้ WebP หรือ AVIF Format

WebP ลดขนาดไฟล์เฉลี่ย 30% เทียบกับ JPEG ที่คุณภาพเดียวกัน AVIF ลดขนาดเฉลี่ย 50% — แต่ browser support ยังไม่ครบ (Safari รองรับเต็มที่ปี 2023)

<picture>
  <source srcset="/hero.avif" type="image/avif">
  <source srcset="/hero.webp" type="image/webp">
  <img src="/hero.jpg" alt="Hero" width="1200" height="630">
</picture>

Browser จะเลือกรูปที่ดีที่สุดที่มันรองรับ — AVIF ก่อน ถ้าไม่ได้ค่อยเป็น WebP ถ้าไม่ได้อีกค่อยเป็น JPEG

6. SSR / SSG แทน Client-Side Rendering

ถ้าใช้ React SPA (Single Page Application) — browser ต้องโหลด JS bundle → execute → render → ค่อยมี LCP element แสดง LCP จะแย่มาก

แนะนำ:

  • Next.js: ใช้ getStaticProps (SSG) หรือ getServerSideProps (SSR)
  • Astro: ทุกหน้าเป็น SSG อยู่แล้ว → LCP เร็วโดย default
  • Nuxt.js: ใช้ useFetch กับ SSR mode
  • WordPress: ใช้ static cache plugin (เช่น WP Rocket, W3 Total Cache)
// Next.js getStaticProps ตัวอย่าง
export async function getStaticProps() {
  const data = await fetchHeroData();
  return {
    props: { hero: data },
    revalidate: 3600 // ISR — regenerate ทุก 1 ชั่วโมง
  };
}

7. Optimize TTFB (Database + Cache)

TTFB ส่วนใหญ่หายไปกับ database query และ application logic — ลดด้วย:

// Express.js + Redis cache ตัวอย่าง
import { createClient } from 'redis';
const redis = createClient();

app.get('/api/products', async (req, res) => {
  const cacheKey = 'products:list';
  const cached = await redis.get(cacheKey);

  if (cached) {
    return res.json(JSON.parse(cached)); // TTFB ~ 5ms
  }

  const products = await db.query('SELECT * FROM products LIMIT 20');
  await redis.setex(cacheKey, 300, JSON.stringify(products)); // cache 5 นาที
  res.json(products); // TTFB ~ 200ms (DB hit)
});

Tips อื่น ๆ:

  • เพิ่ม database index ที่ column ที่ใช้ใน WHERE clause
  • ใช้ connection pool (อย่าเปิด-ปิด connection ทุก request)
  • ใช้ CDN เพื่อ cache HTML (สำหรับเว็บที่ไม่เป็น personalized)

8. กำจัด Render-Blocking Resources

CSS และ JavaScript ใน <head> จะ block render — browser ต้องโหลดและ execute เสร็จก่อนถึงจะ paint อะไรได้

<!-- BAD: Block render -->
<link rel="stylesheet" href="/styles.css">
<script src="/app.js"></script>

<!-- GOOD: Defer + Async + Critical CSS inline -->
<style>
  /* Critical CSS — เฉพาะ above-the-fold */
  .hero { width: 100%; height: 500px; }
  h1 { font-size: 48px; color: #333; }
</style>
<link rel="preload" href="/styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/styles.css"></noscript>
<script src="/app.js" defer></script>

ผลที่ได้: ลด Element Render Delay ได้ 300-1000ms

9. Lazy Load Below-the-Fold

รูปและ iframe ที่อยู่นอก viewport แรก — โหลดทีหลังได้ ไม่ต้องแย่ง bandwidth กับ LCP element

<!-- รูปใน viewport แรก (LCP) -->
<img src="/hero.webp" fetchpriority="high" alt="Hero">

<!-- รูปต่อ ๆ ไป -->
<img src="/section2.webp" loading="lazy" alt="Section 2">
<img src="/section3.webp" loading="lazy" alt="Section 3">
<iframe src="/youtube" loading="lazy"></iframe>

สำคัญ: อย่าใส่ loading="lazy" ที่ LCP image! มันจะทำให้ LCP แย่ลงเพราะ browser ลด priority ของรูปนั้น

10. font-display: swap + Preload Font

ถ้า text เป็น LCP element และคุณใช้ custom font — browser จะรอจน font โหลดเสร็จก่อนถึงแสดงข้อความ (FOIT - Flash of Invisible Text)

<head>
  <link rel="preload" href="/fonts/Prompt-Bold.woff2"
        as="font" type="font/woff2" crossorigin>
</head>

<style>
  @font-face {
    font-family: 'Prompt';
    src: url('/fonts/Prompt-Bold.woff2') format('woff2');
    font-weight: 700;
    font-display: swap; /* แสดง fallback font ก่อน แล้วค่อย swap */
  }
</style>

ผลที่ได้: ลด Element Render Delay สำหรับ text-LCP page ได้ 200-500ms


LCP ใน WordPress, Astro, Next.js

WordPress

WordPress เป็น CMS ที่มี LCP แย่ที่สุดโดยธรรมชาติ เพราะ:

  • Dynamic PHP rendering → TTFB สูง
  • Plugin มาก → render-blocking JS/CSS เยอะ
  • Theme builder (Elementor, Divi) → bloat

แก้ด้วย:

  • ใช้ WP Rocket หรือ W3 Total Cache → cache HTML
  • ใช้ ShortPixel หรือ Smush → convert รูปเป็น WebP
  • ลบ plugin ที่ไม่จำเป็น (ดูคำแนะนำที่ /plugins/)
  • ใช้ Cloudflare APO (Automatic Platform Optimization) สำหรับ WordPress

Astro (แนะนำสำหรับเว็บ marketing)

Astro คือ static-first framework — LCP ดีโดย default เพราะ:

  • ทุกหน้าเป็น HTML static ที่ pre-render แล้ว
  • Zero JavaScript by default → ไม่มี render-blocking JS
  • <Image> component บีบอัด + serve WebP/AVIF อัตโนมัติ
---
import { Image } from 'astro:assets';
import hero from '../assets/hero.jpg';
---

<Image src={hero} alt="Hero"
       widths={[400, 800, 1200]}
       sizes="(max-width: 800px) 100vw, 1200px"
       loading="eager"
       fetchpriority="high"
       format="avif" />

Next.js

Next.js มี Image Component ที่ optimize ให้อัตโนมัติ:

import Image from 'next/image';

export default function Page() {
  return (
    <Image
      src="/hero.webp"
      alt="Hero"
      width={1200}
      height={630}
      priority // เทียบเท่ากับ fetchpriority="high" + eager loading
      sizes="(max-width: 768px) 100vw, 1200px"
    />
  );
}

priority prop จะใส่ <link rel="preload"> ให้อัตโนมัติ + เพิ่ม fetchpriority="high" → LCP ดีขึ้นทันที 30-50%


Case Study: เว็บ E-Commerce ภูเก็ต LCP 5.2s → 1.8s

Background

ลูกค้าเป็นเว็บขายของฝากภูเก็ต (น้ำพริก, ผ้าบาติก, ของที่ระลึก) ใช้ WordPress + WooCommerce

  • Traffic: 50,000 sessions/เดือน (60% มาจากมือถือ)
  • ปัญหา: Bounce rate 68%, Google Search Console รายงาน “Poor LCP” สำหรับ 70% ของหน้า

ค่าก่อนเริ่มแก้ไข (Field Data จาก CrUX)

Metric Mobile Desktop
LCP 5.2s (Poor) 3.4s (Needs Improvement)
INP 380ms (Needs) 180ms (Good)
CLS 0.18 (Needs) 0.08 (Good)
TTFB 1,400ms 950ms
Bounce Rate 68% 52%

Breakdown ปัญหา LCP 5.2s (Mobile)

  1. TTFB 1,400ms — host ที่ Bangkok แต่ database query ช้า, ไม่มี cache
  2. Resource Load Delay 600ms — hero image อยู่ใน CSS background-image
  3. Resource Load Time 2,800ms — hero image เป็น JPEG ขนาด 1.2MB (ไม่ resize)
  4. Element Render Delay 400ms — render-blocking CSS 250KB

สิ่งที่ทีม Southern Whale ทำ

ขั้นตอน สิ่งที่ทำ ลด LCP ได้
1 ติดตั้ง Cloudflare + APO (cache HTML ที่ edge) -800ms TTFB
2 ติดตั้ง WP Rocket + Redis object cache -400ms TTFB
3 เปลี่ยน background-image<img> element -500ms Delay
4 เพิ่ม fetchpriority="high" ที่ hero image -200ms Delay
5 Convert JPEG → WebP + responsive srcset (400/800/1200) -1,800ms Load Time
6 ใส่ Critical CSS inline + defer non-critical CSS -300ms Render Delay
7 Lazy load รูปอื่นที่อยู่ below-the-fold -200ms (ช่วยให้ priority อยู่ที่ hero)
8 Preload font + font-display: swap -100ms Render Delay
9 ลบ plugin ที่ไม่ใช้ 12 ตัว -200ms TTFB
10 Database query optimization + index -300ms TTFB

ค่าหลังแก้ไข (1 เดือนหลังเริ่มเก็บ Field Data)

Metric Mobile (Before) Mobile (After) Improvement
LCP 5.2s (Poor) 1.8s (Good) -65%
INP 380ms (Needs) 195ms (Good) -49%
CLS 0.18 (Needs) 0.05 (Good) -72%
TTFB 1,400ms 280ms -80%
Bounce Rate 68% 41% -27pp
Conversion Rate 1.2% 2.8% +133%

ผลข้างเคียงดี ๆ

  • Google Search Console: “Good URLs” เพิ่มจาก 30% → 92% ภายใน 28 วัน
  • Organic Traffic: เพิ่มขึ้น 47% ภายใน 3 เดือน
  • Average Order Value: เพิ่มขึ้น 18% (ผู้ใช้รู้สึก trust เว็บมากขึ้น)

“เว็บโหลดเร็วขึ้นชัดเจน ลูกค้าสั่งของฝากมากขึ้น ทีม Southern Whale ทำงานดีมาก” — เจ้าของร้าน


Tools สำหรับวัด LCP

1. PageSpeed Insights (ฟรี — แนะนำเริ่มจากที่นี่)

URL: https://pagespeed.web.dev/

  • แสดงทั้ง Field Data (จาก CrUX 28 วันย้อนหลัง) และ Lab Data (จาก Lighthouse)
  • บอก LCP element ตัวจริงในหน้าเว็บคุณ
  • แนะนำ optimization ที่ทำได้ทันที

2. Lighthouse (Chrome DevTools)

DevTools → Lighthouse tab → Generate report
  • รัน Lab test ทันที (ไม่ต้องรอ field data)
  • แสดง LCP candidate element พร้อม screenshot
  • เหมาะกับการทดสอบ pre-production

3. Chrome DevTools Network Tab

DevTools → Network tab → ติ๊ก "Disable cache" → Reload
  • ดู waterfall ของ resource ทั้งหมด
  • หา resource ที่ใหญ่ที่สุดและช้าที่สุด
  • ใช้ Throttling: Slow 4G เพื่อจำลอง mobile network

4. WebPageTest (Pro tool)

URL: https://www.webpagetest.org/

  • ทดสอบจาก location จริง (Bangkok, Singapore, US)
  • Filmstrip + waterfall อย่างละเอียด
  • Compare 2 URL side-by-side (เปรียบเทียบ before/after)

5. Chrome User Experience Report (CrUX)

URL: https://chromeuxreport.com/

  • Field Data จากผู้ใช้ Chrome จริงทั่วโลก
  • ใช้ค่านี้แหละที่ Google นำไปจัดอันดับ SEO
  • API ฟรี ดึงไป monitor เองได้

5 ข้อผิดพลาดที่คนทำบ่อยที่สุดเรื่อง LCP

1. ใส่ loading="lazy" ที่ LCP image

นี่คือ อันดับ 1 ที่เห็นบ่อยที่สุด — developer คิดว่า lazy loading ดีกับทุกรูป แต่ความจริง:

  • loading="lazy" ทำให้ browser ลด priority ของรูปนั้น
  • LCP image ต้องโหลดเร็วที่สุด ห้าม lazy load!
<!-- ผิด -->
<img src="/hero.webp" loading="lazy" alt="Hero">

<!-- ถูก -->
<img src="/hero.webp" loading="eager" fetchpriority="high" alt="Hero">

2. ใช้ background-image สำหรับ Hero

/* ผิด: Browser ต้องโหลด CSS เสร็จก่อนถึงเห็นรูป */
.hero {
  background-image: url('/hero.jpg');
}

แทนที่ด้วย <img> element + CSS positioning จะเร็วกว่า 500-1000ms

3. ไม่กำหนด width + height ในรูป

<!-- ผิด: ไม่มี dimension → CLS เพิ่ม + browser ไม่ reserve space -->
<img src="/hero.webp" alt="Hero">

<!-- ถูก -->
<img src="/hero.webp" width="1200" height="630" alt="Hero">

ไม่ใส่ width/height ทำให้ทั้ง LCP แย่ (browser ต้อง re-layout) และ CLS แย่

4. ใส่ render-blocking 3rd-party script ที่ <head>

<!-- ผิด: Block render นาน 2-3 วินาที -->
<head>
  <script src="https://www.googletagmanager.com/gtag/js?id=GA_ID"></script>
  <script src="https://connect.facebook.net/en_US/fbevents.js"></script>
</head>

<!-- ถูก: Defer หรือใช้ async + ย้ายไปท้าย <body> -->
<body>
  <!-- เนื้อหา -->
  <script async src="..."></script>
</body>

หรือใช้ Tag Manager + Server-Side Tracking เพื่อย้าย overhead ออกจาก client

5. Over-preload ทุกอย่าง

<!-- ผิด: Preload เยอะเกินไป browser ไม่รู้ว่าตัวไหนสำคัญที่สุด -->
<link rel="preload" href="/hero.webp" as="image">
<link rel="preload" href="/section2.webp" as="image">
<link rel="preload" href="/section3.webp" as="image">
<link rel="preload" href="/banner.webp" as="image">

Preload เฉพาะ LCP element เท่านั้น — รูปอื่น browser จะจัดการเอง


คำถามที่พบบ่อย

Q1: LCP เกี่ยวกับ INP และ CLS อย่างไร?

ทั้งสามเป็น Core Web Vitals ที่ Google ใช้จัดอันดับ:

  • LCP = ความเร็วโหลด (เห็นเนื้อหาเร็วแค่ไหน)
  • INP = ความเร็วตอบสนอง (กดปุ่มแล้ว response เร็วแค่ไหน)
  • CLS = ความเสถียรของ layout (มี layout shift หรือเปล่า)

ทั้งสามต้องผ่านเกณฑ์ Good เพื่อได้ “Good URLs” status

Q2: LCP กับ FCP ต่างกันอย่างไร?

  • FCP (First Contentful Paint) = เวลาที่ pixel แรกใด ๆ ปรากฏ (อาจเป็นแค่ background สีเทา)
  • LCP = เวลาที่ element ใหญ่ที่สุด (เนื้อหาหลัก) ปรากฏ

LCP สื่อถึงประสบการณ์ผู้ใช้จริงมากกว่า FCP

Q3: ทำไม Lighthouse บอก LCP ดี แต่ PageSpeed Insights บอกแย่?

เพราะ Lighthouse ใช้ Lab Data (simulate ในห้องทดลอง) แต่ PageSpeed Insights แสดง Field Data จากผู้ใช้จริง ที่อาจอยู่บน network ช้ากว่า, device เก่ากว่า — ใช้ Field Data เป็นหลัก

Q4: LCP element ของหน้าเว็บคืออะไร ดูได้อย่างไร?

เปิด PageSpeed Insights → ใส่ URL → ดูส่วน “Largest Contentful Paint element” จะมี screenshot และ HTML ของ element ตัวนั้น

อีกวิธี: เปิด Chrome DevTools → Performance tab → Record reload → ดู “LCP” marker

Q5: ใช้ Cloudflare แล้ว LCP จะดีขึ้นทันทีไหม?

ดีขึ้นแน่นอน แต่ขึ้นกับ:

  • ถ้า TTFB เป็นปัญหาหลัก → Cloudflare CDN + Cache ลด TTFB ได้ 50-80%
  • ถ้าปัญหาคือ image ใหญ่ → ต้องใช้ Cloudflare Images หรือ Polish เพิ่ม
  • ถ้า render-blocking JS เยอะ → Cloudflare ไม่ช่วย ต้อง optimize code เอง

ดูคู่มือเต็มที่ Cloudflare Complete Guide 2026

Q6: WordPress LCP แย่มาก ทำอย่างไรดี?

3 ขั้นตอนหลัก:

  1. ติดตั้ง cache plugin — WP Rocket (paid) หรือ W3 Total Cache (free)
  2. เปิด Cloudflare APO ($5/เดือน) — cache HTML ที่ edge
  3. Optimize images — ใช้ ShortPixel หรือ Smush convert WebP

ส่วนใหญ่ทำ 3 ขั้นนี้ LCP ลดได้ 50%+ ดูข้อมูลเพิ่มที่ /plugins/ ของเรา

Q7: LCP ต่างกันระหว่าง mobile vs desktop เยอะ — เป็นปกติไหม?

ปกติ — ถ้าเว็บคุณ responsive ดี LCP mobile ควรช้ากว่า desktop 30-80% เพราะ:

  • Mobile network ช้ากว่า (4G vs WiFi)
  • Mobile CPU ช้ากว่า → render delay สูง
  • Mobile viewport เล็ก → LCP element อาจเป็นคนละตัว

Google ดูทั้งสอง — ต้อง pass ทั้ง mobile และ desktop

Q8: ใช้ AI image (Stable Diffusion, Midjourney) จะทำให้ LCP ช้าไหม?

ไม่ — AI image เป็นแค่ source ของรูป สิ่งที่กำหนด LCP คือ:

  • ขนาดไฟล์สุดท้าย (ต้อง compress)
  • Format (WebP/AVIF)
  • Dimension (responsive srcset)

ไม่ว่ารูปมาจากที่ไหน ถ้า optimize ดี LCP ก็เร็ว


สรุป: Roadmap ลด LCP ของคุณวันนี้

LCP คือเมตริก Core Web Vitals ที่สำคัญที่สุดต่อ “First Impression” ของผู้ใช้ ถ้าผู้ใช้เห็นหน้าเว็บเปล่า ๆ 5 วินาที — พวกเขาจะคลิกออกก่อนคุณจะมีโอกาส convert พวกเขาเป็นลูกค้า

Action items ที่คุณทำได้วันนี้:

  1. ✅ วัด LCP ปัจจุบันที่ pagespeed.web.dev — รู้จุดเริ่มต้น
  2. ✅ ระบุ LCP element ในหน้า — รู้ว่าต้อง optimize อะไร
  3. ✅ เพิ่ม fetchpriority="high" ที่ LCP image — quick win 200ms+
  4. ✅ Convert hero image เป็น WebP — quick win 30-50% file size
  5. ✅ Setup Cloudflare CDN — quick win TTFB
  6. ✅ ลบ render-blocking JS ที่ไม่จำเป็น
  7. ✅ Re-test หลัง deploy 1 สัปดาห์ — รอ Field Data update

Target ที่ควรตั้ง:

  • LCP < 2.5 วินาที (ทั้ง mobile + desktop)
  • TTFB < 800ms
  • Resource Load Time < 1,500ms
  • Element Render Delay < 200ms

ถ้าคุณทำตามคู่มือนี้แล้วยังลด LCP ไม่ได้ตามเป้า — ติดต่อทีม Southern Whale เราช่วย audit + optimize เว็บลูกค้ามากกว่า 200+ ราย LCP เฉลี่ยลดลง 60% ใน 30 วัน

ต้องการเรียนรู้เพิ่มเรื่อง Core Web Vitals ตัวอื่น? อ่านต่อ:

หรือดูบริการของเรา:

  • Web Development — สร้างเว็บใหม่ Performance-first ตั้งแต่วันแรก
  • Plugin Recommendations — รายการ plugin ที่เราใช้กับเว็บลูกค้า

LCP ที่ดีไม่ใช่แค่ตัวเลข แต่เป็นจุดเริ่มต้นของประสบการณ์ที่ดีของผู้ใช้ — และเป็นรากฐานของ SEO ที่ยั่งยืนในยุคที่ Google วัดทุกอย่างจาก “ผู้ใช้จริงรู้สึกอย่างไร” มากกว่าจาก “เว็บถูกออกแบบมาอย่างไร”

เริ่มต้นวันนี้ ที่ผู้ใช้คนต่อไปของคุณจะรอน้อยลง 2 วินาที — และนั่นคือทั้งหมดที่ต้องใช้เพื่อเปลี่ยน bounce rate ให้เป็น conversion

คีย์เวิร์ดที่เกี่ยวข้อง

lcp คือ, largest contentful paint, ลด lcp, core web vitals, page speed