PlusMagi's Blog By Pitt Phunsanit Backend,Database Astro: Assets & Image Optimization (การใช้งาน component, Responsive Images และการบีบอัดภาพอัตโนมัติ)

Astro: Assets & Image Optimization (การใช้งาน component, Responsive Images และการบีบอัดภาพอัตโนมัติ)

ในโลกของการพัฒนาเว็บสมัยใหม่ การเพิ่มประสิทธิภาพ (Optimization) ของสินทรัพย์ (Assets) และรูปภาพ (Images) เป็นหัวใจสำคัญที่กำหนดความเร็วและประสบการณ์ผู้ใช้ (UX) Astro เป็นเครื่องมือที่เน้นความเร็วสูง และหลักการทำงานของมันคือการจัดการสินทรัพย์อย่างเป็นระบบ แม้ว่า Astro จะเป็น Static Site Generator แต่หลักการจัดการข้อมูลและการปรับขนาดสินทรัพย์ก็สามารถจำลองและจัดการได้อย่างมีประสิทธิภาพด้วยระบบฐานข้อมูลที่ทรงพลังอย่าง PostgreSQL

💡 การจัดการสินทรัพย์ด้วย Component-Driven Architecture ใน PostgreSQL

การใช้ Component-Based Architecture หมายถึงการแยกส่วนประกอบของ UI ให้เป็นโมดูลย่อยที่นำกลับมาใช้ใหม่ได้ ในมุมมองของ PostgreSQL เราสามารถจำลองการจัดการ Component Assets โดยการจัดเก็บรายการสินทรัพย์ที่เกี่ยวข้องในตาราง และใช้ฟังก์ชันเพื่อดึงข้อมูลที่จำเป็นอย่างมีโครงสร้าง

สมมติว่าเรามีตาราง `component_assets` ที่เก็บข้อมูลของส่วนประกอบต่างๆ:

SQL

SELECT component_name, asset_path FROM component_assets WHERE component_id = 'header' AND asset_type = 'logo';

การ Query แบบนี้ช่วยให้เรามั่นใจได้ว่าทุก Component จะเรียกใช้สินทรัพย์ที่ถูกต้องและเป็นเวอร์ชันล่าสุดเสมอ

🖼️ Responsive Images และการปรับขนาดอัตโนมัติ (Auto-Scaling)

Responsive Images คือการส่งขนาดรูปภาพที่เหมาะสมที่สุดตามอุปกรณ์ที่ผู้ใช้กำลังใช้งานอยู่ แทนที่จะส่งภาพขนาดใหญ่เพียงภาพเดียว การจัดการนี้ใน PostgreSQL สามารถทำได้โดยการใช้ฟังก์ชันเพื่อสร้างรายการขนาดภาพที่จำเป็น (srcset) จากข้อมูลต้นฉบับ

เราสามารถใช้ฟังก์ชัน `jsonb_agg` เพื่อรวมขนาดภาพที่ต้องการเข้าด้วยกัน:

SQL

SELECT original_image_id, jsonb_agg(DISTINCT size_variant ORDER BY size_variant) AS required_sizes FROM image_assets WHERE image_id = 123;

ผลลัพธ์ที่ได้คือรายการขนาดที่จำเป็น เช่น ["small", "medium", "large"] ซึ่งจำลองการสร้าง Responsive Image Set ได้อย่างสมบูรณ์

⚙️ การบีบอัดภาพและการเพิ่มประสิทธิภาพ (Compression Simulation)

การบีบอัดภาพอัตโนมัติ (Auto-Compression) มีเป้าหมายเพื่อลดขนาดไฟล์โดยไม่สูญเสียคุณภาพที่มองเห็นได้มากนัก ในระดับฐานข้อมูล เราสามารถจำลองกระบวนการนี้ได้โดยการสร้างฟังก์ชันที่คำนวณค่าประสิทธิภาพ (Optimization Score) หรือจำลองการแปลงรูปแบบไฟล์ (Format Conversion) ก่อนการจัดเก็บ

ตัวอย่างการจำลองการคำนวณคะแนนประสิทธิภาพของภาพ:

SQL

CREATE OR REPLACE FUNCTION calculate_optimization_score(file_size_kb numeric, format text) RETURNS numeric AS $$ BEGIN RETURN (file_size_kb * 0.8) + CASE WHEN format = 'webp' THEN 10 ELSE 0 END; END; $$ LANGUAGE plpgsql;

จากนั้นเราสามารถเรียกใช้ฟังก์ชันนี้เพื่อตัดสินใจว่าควรใช้รูปแบบใดในการแสดงผล:

SQL

SELECT image_name, calculate_optimization_score(file_size_kb, 'webp') AS optimized_score FROM image_assets WHERE image_id = 456;

✅ บทสรุป: การบูรณาการประสิทธิภาพด้วย PostgreSQL

การทำ Asset Optimization ไม่ได้จำกัดอยู่แค่โค้ดฝั่ง Front-end เท่านั้น แต่ยังรวมถึงการจัดการข้อมูลโครงสร้างเบื้องหลังด้วย การใช้ PostgreSQL ในการจัดการ Component Dependencies, การสร้างรายการ Responsive Images, และการคำนวณคะแนนการบีบอัดภาพ ทำให้เราสามารถสร้างระบบที่แข็งแกร่ง มีประสิทธิภาพ และขยายได้ง่าย (Scalable) ซึ่งเป็นหลักการสำคัญที่ระบบระดับ Senior Architect ต้องให้ความสำคัญ

Exit mobile version