Tôi đã xem xét nguồn gốc của một mô tả người dùng greasemonkey và nhận thấy những điều sau đây trong css của họ:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
Tôi có thể đánh giá cao rằng một tập lệnh greasemonkey sẽ muốn gói bất cứ thứ gì nó có thể trong nguồn thay vì lưu trữ nó trên máy chủ, điều đó là quá rõ ràng. Nhưng vì tôi chưa thấy kỹ thuật này trước đây, tôi đã xem xét việc sử dụng nó và nó có vẻ hấp dẫn vì một số lý do:
- Nó sẽ giảm lượng yêu cầu HTTP khi tải trang, do đó nâng cao hiệu suất
- Nếu không có CDN, thì nó sẽ giảm lượng lưu lượng truy cập được tạo thông qua cookie được gửi cùng với hình ảnh
- Các tệp CSS có thể được lưu trữ
- Các tệp CSS có thể được GZIPPED
Xem xét rằng IE6 (ví dụ) có vấn đề với bộ đệm cho hình ảnh nền, có vẻ như đó không phải là ý tưởng tồi tệ nhất ...
Vì vậy, đây là một thực hành tốt hay xấu, tại sao bạn không sử dụng nó và bạn sẽ sử dụng công cụ nào để mã hóa hình ảnh?
cập nhật - kết quả kiểm tra
thử nghiệm với hình ảnh: http://fragged.org/dev/map-shot.jpg - 133.6Kb
kiểm tra URL: http://fragged.org/dev/base64.html
tệp CSS chuyên dụng: http://fragged.org/dev/base64.css - 178.1Kb
Phía máy chủ mã hóa GZIP
kích thước kết quả được gửi đến máy khách (kiểm tra thành phần YSLOW): 59.3Kb
Lưu dữ liệu được gửi tới trình duyệt của khách hàng: 74.3Kb
Đẹp, nhưng nó sẽ ít hữu ích hơn cho những hình ảnh nhỏ hơn, tôi đoán vậy.
CẬP NHẬT: Bryan McQuade, một kỹ sư phần mềm của Google, làm việc trên PageSpeed, bày tỏ tại ChromeDevSummit 2013 rằng dữ liệu: uris trong CSS được coi là một mô hình chống chặn kết xuất để cung cấp CSS quan trọng / tối thiểu trong suốt cuộc nói chuyện của anh ấy
#perfmatters: Instant mobile web apps
. Xem http://developer.chrome.com/devsummit/simes và ghi nhớ điều đó - slide thực tế
PRO:
giới hạn bộ nhớ cache trên thiết bị di động ... CON:
một số hình ảnh nên được coi là nội dung thay vì trình bày đơn giản và do đó phù hợp hơn với các thẻ HTML IMG so với hình nền CSS.