Skip to main content

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

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

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เวลาสัดส่วน
TTFB1,200ms27%
Resource Load Delay800ms18%
Resource Load Time2,100ms47%
Element Render Delay400ms8%
รวม LCP4,500ms100%

จากตัวอย่างนี้ ปัญหาใหญ่สุดคือ 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)

MetricMobileDesktop
LCP5.2s (Poor)3.4s (Needs Improvement)
INP380ms (Needs)180ms (Good)
CLS0.18 (Needs)0.08 (Good)
TTFB1,400ms950ms
Bounce Rate68%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
5Convert JPEG → WebP + responsive srcset (400/800/1200)-1,800ms Load Time
6ใส่ Critical CSS inline + defer non-critical CSS-300ms Render Delay
7Lazy load รูปอื่นที่อยู่ below-the-fold-200ms (ช่วยให้ priority อยู่ที่ hero)
8Preload font + font-display: swap-100ms Render Delay
9ลบ plugin ที่ไม่ใช้ 12 ตัว-200ms TTFB
10Database query optimization + index-300ms TTFB

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

MetricMobile (Before)Mobile (After)Improvement
LCP5.2s (Poor)1.8s (Good)-65%
INP380ms (Needs)195ms (Good)-49%
CLS0.18 (Needs)0.05 (Good)-72%
TTFB1,400ms280ms-80%
Bounce Rate68%41%-27pp
Conversion Rate1.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