ฉันดูที่แหล่งที่มาของ userscript greasemonkey และสังเกตเห็นสิ่งต่อไปนี้ใน CSS:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
ฉันสามารถชื่นชมได้ว่าสคริปต์ greasemonkey ต้องการรวมสิ่งที่สามารถทำได้ภายในแหล่งที่มาแทนที่จะเป็นโฮสต์บนเซิร์ฟเวอร์นั่นชัดเจนเพียงพอ แต่ก่อนหน้านี้ฉันไม่เคยเห็นเทคนิคนี้เลยฉันจึงพิจารณาการใช้งานและดูเหมือนว่าจะมีเหตุผลหลายประการ:
- มันจะลดปริมาณของคำขอ HTTP ในการโหลดหน้าซึ่งจะช่วยเพิ่มประสิทธิภาพ
- หากไม่มี CDN ก็จะลดปริมาณการรับส่งข้อมูลที่สร้างขึ้นจากคุกกี้ที่ถูกส่งไปพร้อมกับรูปภาพ
- ไฟล์ CSS สามารถแคชได้
- ไฟล์ CSS สามารถเป็น GZIPPED
เมื่อพิจารณาว่า IE6 (เช่น) มีปัญหากับแคชสำหรับภาพพื้นหลังดูเหมือนว่าไม่ใช่ความคิดที่เลวร้ายที่สุด ...
นี่เป็นวิธีปฏิบัติที่ดีหรือไม่ดีทำไมคุณไม่ใช้และคุณจะใช้เครื่องมือใดในการเข้ารหัสภาพที่ base64
อัพเดท - ผลการทดสอบ
การทดสอบด้วยภาพ: http://fragged.org/dev/map-shot.jpg - 133.6Kb
URL ทดสอบ: http://fragged.org/dev/base64.html
ไฟล์ CSS เฉพาะ: http://fragged.org/dev/base64.css - 178.1Kb
ฝั่งเซิร์ฟเวอร์การเข้ารหัส GZIP
ขนาดผลลัพธ์ส่งไปยังลูกค้า (ทดสอบส่วนประกอบ YSLOW): 59.3Kb
การบันทึกข้อมูลที่ส่งไปยังเบราว์เซอร์ไคลเอ็นต์ของ: 74.3Kb
ดีมาก แต่มันจะมีประโยชน์น้อยลงสำหรับภาพเล็ก ๆ ฉันว่า
UPDATE: ไบรอัน McQuade, วิศวกรซอฟต์แวร์ที่ Google ทำงานใน PageSpeed แสดงที่ ChromeDevSummit 2013 ว่าข้อมูล: ยูริใน CSS ถือว่าเป็นบล็อกการแสดงผลป้องกันรูปแบบสำหรับการส่งมอบที่สำคัญ / CSS
#perfmatters: Instant mobile web apps
น้อยที่สุดในระหว่างการพูดคุยของเขา ดูhttp://developer.chrome.com/devsummit/sessionsและจำไว้ - สไลด์จริง
PRO:
ขีด จำกัด แคชบนอุปกรณ์มือถือ ... CON:
รูปภาพบางภาพควรถือเป็นเนื้อหาแทนที่จะเป็นการนำเสนอแบบง่ายและเหมาะสำหรับแท็ก IMG HTML มากกว่าภาพพื้นหลัง CSS