एज युग में इमेज डिलीवरी — CDN डिज़ाइन 2025
प्रकाशित: 22 सित॰ 2025 · पढ़ने का समय: 2 मि. · Unified Image Tools संपादकीय
सर्च ट्रैफ़िक बढ़ाने के लिए तेज़ इमेज डिलीवरी अनिवार्य है। यह गाइड edge/CDN डिज़ाइन को उपयोग‑मामले के अनुसार व्यवस्थित करता है और सामान्य पिटफॉल से बचने के लिए चेकलिस्ट देता है।
Image CDN के मूलभूत सिद्धांत
- ट्रांसफ़ॉर्मेशन यूनिट तय करें (origin बनाम variant)
- Cache key तय करें (URL,
Accept
,Accept-Encoding
, DPR, आदि) - Expiry/Invalidation (fingerprint,
Cache-Control
,stale-while-revalidate
) - रेस्पॉन्सिव इमेज के साथ समन्वय (
srcset
/sizes
की शुद्धता)
लिंक: srcset डिज़ाइन के मूल, INP‑केंद्रित डिलीवरी, Priority hints & preload
HTTP हेडर — व्यवहार में
Cache-Control: public, max-age=86400, stale-while-revalidate=259200
Vary: Accept, DPR
Accept-Ranges: bytes
Timing-Allow-Origin: *
Vary: Accept
से AVIF/WebP/JPEG नेगोशिएट करेंVary: DPR
जोड़ें तो सर्वर पर प्रति‑DPR वेरिएंट कैश करें- SSG/ISR के लिए, स्पष्ट URL वर्ज़निंग अधिक सुरक्षित (उदा.
hero-640.avif?v=20250922
)
Priority Hints / Early Hints
<!-- LCP उम्मीदवार के लिए -->
<link rel="preload" as="image" href="/images/hero-1200.avif" imagesrcset="..." imagesizes="(min-width: 1024px) 1200px, 90vw" fetchpriority="high" />
- हर चीज़ को high priority न बनाएं (CLS बजट से टकराव)
- संभव हो तो 103 Early Hints से प्रीकनेक्ट (
preconnect
)/प्रीलोड पहले भेजें
Edge बनाम Origin ट्रांसफ़ॉर्म अलग करना
- Edge: उच्च‑आवृत्ति, चौड़ाई/क्वालिटी/फॉर्मेट (AVIF/WebP) नेगोशिएशन
- Origin: महंगे/फिडेलिटी‑क्रिटिकल चरण (metadata, ICC, alpha compositing)
उपकरण: फॉर्मेट कन्वर्टर, मास कम्प्रेसर, प्लेसहोल्डर जनरेटर
क्लासिक पिटफॉल
Vary
सेट है पर CDN कैश नहीं कर रहा (डबल‑कन्फ़िग)- पुराने क्लाइंट को AVIF भेजना बिना
Accept: image/avif
→ blank - दोहरी ट्रांसफ़ॉर्म (optimizer सेवा + ऐप CDN) → क्वालिटी लॉस
स्थायी चेकलिस्ट
- [ ] LCP इमेज: सही
fetchpriority
औरsizes
- [ ] Cache key via URL वर्ज़निंग या
Vary
- [ ] ट्रांसफ़ॉर्म एरर पर सुरक्षित फॉलबैक (JPEG)
- [ ] इमेज alt + इमेज SEO के लिए संरचित डेटा
Cache key का विवरण
- सुझाया key:
URL + Accept + DPR + Width + Quality
- Edge फंक्शन में
w
/q
नॉर्मलाइज़ करें (320/480/640/…) - रिस्पॉन्स हेडर उदाहरण:
Cache-Control: public, max-age=604800, stale-while-revalidate=2592000
Vary: Accept, DPR
CDN-Cache-Status: HIT
AVIF/WebP फॉलबैक स्ट्रैटेजी
Accept
के आधार पर पहले AVIF, फिर WebP, फॉलबैक JPEG- टाइमआउट/त्रुटि पर सर्वर‑साइड JPEG फॉलबैक
- क्लाइंट‑साइड
<picture>
+type
से ब्राउज़र चुनने दें (संगतता स्पष्ट करने के लिएsrcset type
का उपयोग)
<picture>
<source type="image/avif" srcset="hero.avif 1x, hero@2x.avif 2x" />
<source type="image/webp" srcset="hero.webp 1x, hero@2x.webp 2x" />
<img src="hero.jpg" alt="..." width="1200" height="630" />
</picture>
ऑन‑द‑फ्लाई resize को सामान्य करें
- तय चौड़ाइयाँ: 320/480/640/768/960/1200/1600/2000 (
sizes
के साथ मेल) - इनकमिंग
w
को राउंड करें ताकि कैश फ्रैग्मेंट न हो - उपयोग‑आधारित
q
प्रीसेट: थंब 60/फोटो 70/UI 80
सुरक्षा और दुरुपयोग नियंत्रण
- साइन किए हुए URL (सीमा:
w
/h
/q
/fmt
) - रेट‑लिमिट और सर्किट ब्रेकर
- भारी फ़िल्टर निषिद्ध जो CPU तोड़ दें
ऑब्ज़र्वेबिलिटी/लागत नियंत्रण
- लॉग: URL, fmt, w, q, dpr, cacheStatus, genTime, size
- डैशबोर्ड: फॉर्मेट‑हिट रेट, मीडियन आकार, p95 जेन टाइम
- लागत: हॉट चौड़ाइयाँ प्री‑जेन; ओरिजिन लोड घटाएँ
Edge फ़ंक्शन (pseudo)
export default async function handle(req) {
const u = new URL(req.url)
const w = normalizeWidth(u.searchParams.get('w'))
const q = normalizeQuality(u.searchParams.get('q'))
const fmt = negotiate(req.headers.get('Accept'))
const key = `${u.pathname}?w=${w}&q=${q}&fmt=${fmt}`
const cached = await caches.default.match(key)
if (cached) return cached
const out = await transform(u.pathname, { w, q, fmt })
return new Response(out.body, { headers: responseHeaders({ fmt, w, q }) })
}
ट्रबलशूटिंग
- पुराने ब्राउज़र में इमेज नहीं →
Accept
नेगोशिएशन सुधारें या<source type>
दें। CDN परVary: Accept
とVary: DPR
一致を確認。 - जनरेशन धीमा → चौड़ाइयों का सेट घटाएँ; प्रीसेट गुणवत्ता;ダブル re‑encode を避け、ホットサイズを事前生成。
- क्वालिटी असंगत → 用途別
q
を固定、AVIF のeffort
は中庸(3–6)に。変換後はCache-Control
/stale-while-revalidate
を設定。 - 観測で異常(p95 生成時間の悪化/ヒット率低下)→
imagesrcset
/imagesizes
のずれとレスポンスヘッダを再点検。
FAQ
प्र: क्या हमेशा WebP/AVIF ही चुनें? उ: कम्पैटिबिलिटी और जेनरेशन‑कास्ट का संतुलन करें। ब्रांड‑क्रिटिकल सरफेस पर JPEG अभी भी बढ़त दे सकता है।
प्र: अधिक Vary
आयाम → कम कैश हिट?
उ: चौड़ाई/क्वालिटी सामान्य करके फ्रैग्मेंटेशन घटाएँ। DPR को महत्वपूर्ण जगहों तक सीमित रखें।
सार
“सही cache key” और “LCP‑कैंडिडेट पर लक्षित ऑप्टिमाइज़ेशन” — perceived स्पीड व सर्च ट्रैफिक बढ़ाने का सबसे तेज़ रास्ता। हीरो इमेज से शुरू करें और छोटे A/B से सीखें।