[ กลับหน้าราคาทอง // HOME ]
GOLDPRICE // DATA SOURCE

แหล่งข้อมูลและวิธีอ่านราคา

หน้านี้อธิบายที่มาของราคาทองบนเว็บนี้ วิธีดึงและแปลงข้อมูลจากฟีดจริง และระบบแคชที่ใช้ ทุกอย่างอ้างอิงจากซอร์สโค้ดจริงของโปรเจกต์

01

แหล่งข้อมูลราคา // Data sources

ราคาทั้งหมดมาจากฟีดเรียลไทม์ของ Thaigold.info ซึ่งให้ราคาสมาคมค้าทองคำ (ทองคำแท่งและทองรูปพรรณ 96.5%) ราคาทองตลาดโลก (XAU/USD) และอัตรา แลกเปลี่ยน USD/THB ในไฟล์เดียว เป็นแหล่งเดียวที่โปรเจกต์นี้เรียกใช้จริง

ข้อมูลต้นทางเป็น JSON array ที่แต่ละแถวมีฟิลด์ name, bid, ask และ diff โปรเจกต์จับคู่แถวด้วยชื่อดังนี้:

สมาคมฯ    -> ทองคำแท่ง 96.5%  (goldBar)
96.5%      -> ทองรูปพรรณ 96.5% (goldJewelry)
GoldSpot   -> ทองตลาดโลก XAU/USD (spot)
THB        -> อัตราแลกเปลี่ยน USD/THB (thb)
Update     -> เวลาอัปเดต (unix seconds ใน field bid)
02

วิธีอ่านและแปลงข้อมูล // Parsing logic

ฟีดเป็น JSON จึงไม่มีการ scrape HTML การอ่านค่าใช้ JSON.parse แล้วสร้าง Map ตามชื่อแถว (parseFeed ใน src/lib/gold.ts) การทำความสะอาด ตัวเลขใช้ regexpression เดียวใน toNum:

// ตัดเครื่องหมาย +, จุลภาค (,) และช่องว่างออกก่อนแปลงเป็นตัวเลข
const cleaned = v.toString().replace(/[+,\s]/g, "");
const n = Number(cleaned);

regex /[+,\s]/g ใช้เพื่อทำความสะอาดสตริงตัวเลขเท่านั้น (เช่น "+150" หรือ "64,900") ไม่ได้ใช้ดึงราคา จากมาร์กอัป ค่าที่แปลงไม่ได้จะกลายเป็น null และแสดงเป็น ---- บนหน้าเว็บ

03

ระบบแคชและการรีเฟรช // Caching

การดึงข้อมูลทำฝั่งเซิร์ฟเวอร์ผ่าน TanStack Start server function (getGoldData) หน้าแรกโหลดข้อมูลครั้งแรกใน route loader (server-render) จากนั้นฝั่งไคลเอนต์จะรีเฟรชเองทุก 60 วินาที และมีปุ่มรีเฟรชแบบกดเอง

โปรเจกต์นี้ไม่ได้แคชค่าราคาไว้ในหน่วยความจำหรือฐานข้อมูล แต่ละครั้งที่ เรียกจะ fetch สดจากฟีดต้นทาง (มี timeout 9 วินาที) การ "คงค่าเดิม" ทำที่ ฝั่ง client เท่านั้น: ถ้ารีเฟรชแล้วดึงไม่สำเร็จ (ok:false) จะไม่เขียนทับสเตต ทำให้ยังเห็นราคาล่าสุดที่ดึงได้ก่อนหน้า

04

อ่านต่อ // Continue

ไม่มีฐานข้อมูลหรือ API key ในโปรเจกต์นี้ - ดึงจากฟีดสาธารณะโดยตรง