เผยแพร่: 21 มกราคม 2026
ตั้งแต่ Chrome 144 เป็นต้นไป เราได้ปรับปรุงกระบวนการอัปเดตสำหรับเว็บแอปที่ติดตั้งได้ซึ่งมีไฟล์ Manifest ของเว็บแอปให้มีประสิทธิภาพมากขึ้น และคาดการณ์ได้มากขึ้น โพสต์นี้อธิบายแนวทางปัจจุบัน และการเปลี่ยนแปลงที่เราได้ทำเพื่อปรับปรุงแนวทางดังกล่าว
แนวทางก่อนหน้า (ก่อน Chrome 144)
ก่อน Chrome 144 เว็บแอปพลิเคชันไม่มีเหตุการณ์ที่เฉพาะเจาะจงเพื่อทริกเกอร์การอัปเดต เชิงรุก แต่การอัปเดตจะเกิดขึ้นเมื่อนักพัฒนาแอปแก้ไขไฟล์ Manifest ของแอป หรือไอคอนที่เชื่อมโยง กระบวนการอัปเดตจะเริ่มขึ้นเมื่อ User Agent ดึงข้อมูลไฟล์ Manifest โดยใช้ลิงก์ไฟล์ Manifest ซึ่งมักจะเกิดขึ้นเมื่อผู้ใช้เข้าชมเว็บไซต์หรือเปิดแอป (ที่มีการลิงก์ไฟล์ Manifest นั้น) หากต้องการพิจารณาว่าต้องอัปเดตหรือไม่ ระบบจะเปรียบเทียบ ไฟล์ Manifest และไอคอนปัจจุบันกับสถานะที่บันทึกไว้ก่อนหน้านี้ กระบวนการนี้ ใช้ทรัพยากรมากเนื่องจากต้องดาวน์โหลดไอคอนจาก เครือข่ายเพื่อทำการเปรียบเทียบบิตแมปเสมอ
Chrome จึงใช้การควบคุมเพื่อจำกัดการตรวจสอบเหล่านี้ให้เหลือเพียงวันละครั้งต่อแอป เพื่อลดภาระของเซิร์ฟเวอร์จากการดาวน์โหลดไอคอน แต่การใช้แบนด์วิดท์โดยรวมยังคงสูง นอกจากนี้ การจำกัดการตรวจสอบวันละครั้งยังทำให้เกิดความไม่สอดคล้องกันระหว่างการพัฒนาและการทดสอบ และยังขัดขวางไม่ให้นักพัฒนาซอฟต์แวร์ มอบโซลูชันที่เชื่อถือได้แก่ผู้ใช้ที่ยังไม่ได้รับการอัปเดต
ด้วยแนวทางนี้ นักพัฒนาแอปจึงต้องรับมือกับความซับซ้อนเมื่อใช้การเปลี่ยนแปลงที่เกี่ยวข้องกับความปลอดภัย เช่น การอัปเดตชื่อหรือไอคอนของแอป ซึ่งมักเรียกว่าการเปลี่ยนแปลงข้อมูลประจำตัวของแอป เนื่องจากเว็บแอปไม่มีหน่วยงานกลางอย่าง Google Play เพื่อตรวจสอบการอัปเดต การแก้ไขเหล่านี้จึงต้องแสดงต่อผู้ใช้อย่างชัดเจนเพื่อขอการยืนยัน อย่างไรก็ตาม การพิจารณาเวลาที่เหมาะสมที่สุดในการแจ้งให้ผู้ใช้ทราบถึงการเปลี่ยนแปลงเหล่านี้ยังคงเป็นความท้าทาย
นอกจากนี้ กล่องโต้ตอบการอัปเดตเวอร์ชันก่อนๆ ยังทำให้เกิดความสับสนบ่อยครั้งด้วยการ อ้างว่าไอคอนมีการเปลี่ยนแปลงในขณะที่ผู้ใช้เห็นว่าไอคอนนั้นเหมือนเดิม ปัญหานี้เกิดจากการเปรียบเทียบพิกเซลโดยตรง ซึ่งมักจะแจ้งความแตกต่างเล็กน้อย แม้ว่าการเปลี่ยนแปลงบางอย่างจะเกิดจากการปรับแต่งโดยนักพัฒนาแอป โดยเจตนา แต่หลายอย่างก็เกิดจาก CDN ที่เข้ารหัสรูปภาพใหม่แบบไดนามิก การทริกเกอร์กล่องโต้ตอบการยืนยันบ่อยครั้งนี้ส่งผลให้เราต้อง ปิดใช้การอัปเดตไอคอนใน Chrome 91 ในที่สุด
เราได้เปิดตัวเกณฑ์ความแตกต่างของภาพใน Chrome สำหรับ Android เมื่อหลายปีก่อนเพื่อแก้ไขปัญหานี้ วิธีนี้ช่วยให้มั่นใจได้ว่าระบบจะขอการยืนยันจากผู้ใช้ก็ต่อเมื่อการเปลี่ยนแปลงไอคอนมีความสำคัญเท่านั้น การปรับปรุงนี้ทำให้เราสามารถกลับมาเปิดใช้การอัปเดตไอคอน ใน Android ได้อีกครั้ง แม้ว่าฟีเจอร์นี้จะยังคงปิดใช้ สำหรับ Chrome บนเดสก์ท็อปก็ตาม
ข้อจำกัดและเป้าหมายสำหรับการเปลี่ยนแปลงการอัปเดตเว็บแอป
วัตถุประสงค์ต่อไปนี้เป็นแนวทางในการพัฒนากระบวนการอัปเดตใหม่
- รักษาความคาดหวังของผู้ใช้: เนื่องจากตัวตนของแอปเชื่อมโยงกับแหล่งที่มาโดยธรรมชาติ ชื่อและไอคอนของแอปจึงต้องไม่เปลี่ยนแปลงโดยไม่ได้รับการอนุมัติจากผู้ใช้อย่างชัดเจน
- ตรวจสอบความสอดคล้องของฟังก์ชันการทำงาน: แอปพลิเคชันควรเป็นเวอร์ชันล่าสุดเท่าที่จะเป็นไปได้สำหรับผู้ใช้ทุกคนเพื่อให้มั่นใจว่าฟังก์ชันการทำงานจะสอดคล้องกัน
- มอบประสบการณ์ผู้ใช้และกล่องโต้ตอบที่คาดการณ์ได้: นักพัฒนาแอปควรคาดการณ์ได้ง่ายๆ เมื่อผู้ใช้จะเห็นข้อความแจ้งในอินเทอร์เฟซเกี่ยวกับการอัปเดต ชื่อหรือไอคอนแอป
- เพิ่มประสิทธิภาพการใช้งานเครือข่าย: กลไกการอัปเดตควรลดการรับส่งข้อมูลที่ไม่จำเป็น
มีอะไรเปลี่ยนแปลงใน Chrome 144
ตอนนี้คุณเลือกได้ว่าจะอัปเดตชื่อและไอคอนหรือไม่
ก่อนหน้านี้ ผู้ใช้ต้องเผชิญกับกล่องโต้ตอบที่ขัดขวางการทำงานซึ่งกำหนดให้ผู้ใช้ต้องถอนการติดตั้งแอปหรือยอมรับการเปลี่ยนแปลงไอคอนและชื่อทันที โดยเราได้แทนที่ด้วยคำแนะนำที่ใช้งานง่ายกว่า ซึ่งเข้าถึงได้จากเมนู 3 จุดที่ขยายแล้ว เมื่อเลือกแล้ว ผู้ใช้จะมีตัวเลือกในการไม่สนใจการเปลี่ยนแปลงข้อมูลประจำตัวเหล่านี้โดยสิ้นเชิง หากต้องการ
แม้ว่าการอัปเดตไฟล์ Manifest ส่วนใหญ่จะมีผลทันที แต่ระบบจะจัดเก็บไอคอนและชื่อแอปแยกต่างหาก เนื่องจากถือเป็นสมาชิกที่มีความละเอียดอ่อนด้านความปลอดภัย ซึ่งจะช่วยให้ผู้ใช้ตรวจสอบและใช้การเปลี่ยนแปลงที่เฉพาะเจาะจงเหล่านี้ได้ตามสะดวก

การคลิกตรวจสอบการอัปเดตแอปจะแสดงกล่องโต้ตอบที่แก้ไขแล้ว ชื่อจะเปลี่ยนไป ตามองค์ประกอบที่อัปเดต

ระบบจะไม่ดาวน์โหลดไอคอนหากไม่มีการเปลี่ยนแปลงในช่องไอคอน
ตอนนี้ระบบจะถือว่าไอคอนไม่มีการเปลี่ยนแปลงหากฟิลด์
icons
ในไฟล์ Manifest ยังคงเหมือนกับเวอร์ชันที่ใช้ล่าสุด ภายใต้ตรรกะใหม่นี้ Chrome จะหลีกเลี่ยงการดาวน์โหลดไอคอนเพื่อการเปรียบเทียบด้วยภาพ ซึ่งจะถือว่า URL ของไอคอนเป็น Cache-Control:immutable
ตอนนี้หากต้องการทริกเกอร์การอัปเดตไอคอน นักพัฒนาแอปจะต้องแก้ไขข้อมูลเมตาหรือ URL ของไอคอน
การนำการควบคุมการอัปเดตออก
เนื่องจาก Chrome จะไม่ดาวน์โหลดไอคอนทุกครั้งที่พบไฟล์ Manifest สำหรับ แอปพลิเคชันที่ติดตั้งอีกต่อไป ข้อจำกัดก่อนหน้านี้ซึ่งจำกัดการตรวจสอบการอัปเดต วันละครั้งจึงถูกยกเลิก ตอนนี้ นักพัฒนาแอปสามารถมั่นใจได้ว่าการอัปเดตจะเกิดขึ้นทันทีสำหรับสมาชิกที่ไม่ไวต่อความปลอดภัยทั้งหมด
จัดการไอคอนที่มีการเปลี่ยนแปลงเล็กน้อยในแพลตฟอร์มต่างๆ
ตอนนี้ Chrome จะใช้การอัปเดตไอคอนโดยอัตโนมัติเพื่อปรับปรุงประสบการณ์ของผู้ใช้ ซึ่งแสดงความแตกต่างน้อยกว่า 10% ในการเปรียบเทียบแบบพิกเซลต่อพิกเซล ซึ่งจะช่วยให้มั่นใจได้ว่าความแตกต่างเล็กๆ น้อยๆ เช่น ความแตกต่างที่เกิดจากการเข้ารหัสซ้ำของ CDN จะไม่ ทําให้เกิดกล่องโต้ตอบการอัปเดตที่สร้างความสับสนแก่ผู้ใช้
เราจำกัดการอนุญาตนี้ไว้ที่วันละครั้งเพื่อป้องกันการละเมิดที่อาจเกิดขึ้น หากมีการเปลี่ยนแปลงเพิ่มเติมภายในกรอบเวลานั้น ระบบจะถือว่าไอคอนเป็นการอัปเดตมาตรฐาน และแจ้งให้ผู้ใช้ยืนยันการเปลี่ยนแปลง
ตัวอย่างการอัปเดตไอคอนและชื่อ
{
"name": "Example App",
"short_name": "App",
"id": "https://www.example-app.com/",
"start_url": "https://www.example-app.com/index.html",
"scope": "https://www.example-app.com/",
"icons": [
{
"src": "https://www.example-app.com/img/app.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
}
],
... other attributes omitted ...
}
การเปลี่ยน URL ของไอคอนจะช่วยให้มั่นใจได้ว่าผู้ใช้จะเห็นกล่องโต้ตอบการอัปเดตเพื่อ เปลี่ยนไอคอน
{
"name": "Example App",
"short_name": "App",
"id": "https://www.example-app.com/",
"start_url": "https://www.example-app.com/index.html",
"scope": "https://www.example-app.com/",
"icons": [
{
"src": "https://www.example-app.com/img/app-NEW-URL.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
}
],
... other attributes omitted ...
}