Easy CMS 1.4: เห็นงานเบื้องหลัง และรันครั้งเดียวแม้มีหลาย server
สี่เวอร์ชันหลังจาก 1.0: หน้า admin ที่บอกว่ากำลังโหลด งานเบื้องหลังที่รันครั้งเดียวไม่ว่าจะมีกี่ server และหน้า ตั้งค่า → งานเบื้องหลัง
Easy CMS 1.0 ออกเมื่อวันที่ 17 ตุลาคม หลังจากนั้นมีอีกสี่เวอร์ชัน ทุกเวอร์ชันไม่มี breaking change บทความนี้สรุปว่ามีอะไรเพิ่ม และต้องทำอะไรบ้างตอนอัปเกรด
งานเบื้องหลังรันครั้งเดียว (1.3)
Easy CMS มีงานที่ทำอยู่เบื้องหลัง เช่น การเผยแพร่ตามกำหนดเวลา การส่ง webhook และอีเมลซ้ำ การสำรองข้อมูลตามเวลา และ jobs ที่ config หรือ plugin เพิ่มเข้ามา อย่างการเช็คการชำระเงินของร้านค้า ก่อน 1.3 ถ้ามีสอง server ใช้ฐานข้อมูลเดียวกัน ทั้งคู่อาจหยิบงานชิ้นเดียวกันไปทำ หรือแม้แต่ scheduler กับ cron ใน server เดียว ผลคือโพสต์ถูกเผยแพร่ซ้ำ webhook ถูกส่งซ้ำ หรือได้ backup สองไฟล์
ตอนนี้งานทุกชิ้นถูกจองในฐานข้อมูลก่อนเริ่มทำ จึงรันครั้งเดียว ถ้า server หยุดกลางทาง งานจะกลับเข้าคิวเอง และกดปุ่มส่งซ้ำของ delivery ที่ล้มเหลวสองครั้ง ก็ส่งออกไปครั้งเดียว
แอปที่มี jobs รวมถึงร้านค้า ต้องสร้าง migration หนึ่งครั้งตอนอัปเกรดเป็น 1.3 โดยรัน easy-cms migrate:create แล้วตามด้วย easy-cms migrate
หน้า ตั้งค่า → งานเบื้องหลัง (1.4)
หน้าใหม่นี้แสดงงานเบื้องหลังทั้งหมด แต่ละงานบอกรอบการรัน รันล่าสุดเมื่อไร ผลลัพธ์ (พร้อมข้อความ error ถ้าไม่สำเร็จ) และรอบถัดไป อีก tab หนึ่งแสดงการเผยแพร่ตามกำหนดเวลาที่รอ กำลังรัน หรือไม่สำเร็จ ปุ่ม รันงานที่ถึงเวลาเดี๋ยวนี้ สั่งรันทุกอย่างที่ถึงเวลาแล้ว
หน้านี้ยังบอกด้วยว่างานเบื้องหลังรันล่าสุดเมื่อไร ถ้าไม่มีอะไรรันเลยเกิน 10 นาทีจะขึ้นคำเตือน บน serverless มักแปลว่ายังไม่ได้ตั้ง cron
แอดมินหยุดงานชั่วคราวได้ เช่น ตอนที่บริการภายนอกที่งานเรียกใช้ล่มอยู่ แล้วค่อยกดทำต่อทีหลัง งานที่หยุดไว้จะขึ้นบน Dashboard กันลืม และงานที่ตั้ง adminSchedule: true แอดมินเปลี่ยนเวลารันจากหน้านี้ได้
ตั้งเวลารันตามเวลาของวัน
ตอนนี้ตั้งให้ job รันตามเวลาในเขตเวลาของคุณได้:
export default defineConfig({
timeZone: 'Asia/Bangkok',
jobs: [
{ name: 'sitemap:refresh', at: '02:00', adminSchedule: true, run: refreshSitemap },
],
})ถ้าพลาดเวลาไป เช่น ตอนกำลัง deploy งานจะรันหนึ่งครั้งทันทีที่งานเบื้องหลังกลับมารัน และ timeZone ใช้กับ backups.at ด้วย
หน้า admin บอกว่ากำลังโหลด (1.2)
ระหว่างโหลด Dashboard รายการ ฟอร์ม และหน้าตั้งค่า จะแสดงโครงสีเทาตามรูปร่างของเนื้อหา และมีแถบบาง ๆ วิ่งที่ขอบบนตอนเปลี่ยนหน้า หน้าที่โหลดเร็วจะไม่เห็นอะไรเลย เพราะตัวบอกสถานะขึ้นหลังผ่านไป 250 ms ถ้าเปิด reduced motion ไว้ จะไม่มีการเคลื่อนไหว และ screen reader จะอ่าน "กำลังโหลด…" ครั้งเดียว ปุ่มย้อนกลับในหน้าเอกสารก็กลับไปที่รายการได้อีกครั้ง พร้อมตัวกรองและหน้าเดิม
เพิ่มเติม
ร้านค้าเช็คการชำระเงินที่ยังค้างอยู่หลัง checkout ซ้ำให้ (1.1) เผื่อลูกค้าปิดหน้าไปก่อนที่การชำระเงินจะผ่าน
create input ของ GraphQL ทำเครื่องหมาย field ที่ต้องกรอกใน group และ row ให้ถูกต้อง (1.1)
dropdown แสดงลูกศรแบบเดียวกันทุกเบราว์เซอร์ (1.3)
อัปเกรด
อัปเกรดทุกแพ็กเกจพร้อมกัน:
npm install @easy-cms/core@latest easy-cms@latest
npx easy-cms migrateรายละเอียดอยู่ในคู่มืองานเบื้องหลัง และหน้า changelog มีทุกเวอร์ชัน