2012-07-31 37 views
31

Tôi đang nghĩ đến việc sử dụng hình ảnh được mã hóa base64 cho trang web mà tôi đang làm để tối ưu hóa thời gian tải.Ưu điểm và nhược điểm khi sử dụng hình ảnh được mã hóa base64

Dù sao, trước khi tôi bắt đầu, tôi đã tự hỏi: những ưu điểm và nhược điểm của việc này là gì?

Hiện tại, tôi không thấy bất kỳ bất lợi nào nhưng tôi cũng nhận thấy rằng đó không phải là kỹ thuật được sử dụng thường xuyên và điều đó khiến tôi tự hỏi liệu tôi có bỏ lỡ điều gì không.

Sau khi googleing chủ đề tôi không tìm thấy bất cứ điều gì rõ ràng vì vậy tôi quyết định hỏi ở đây.

+2

Không chắc chắn những gì bạn đang cố gắng tối ưu hóa. Bạn có nghĩ rằng base64 sẽ nén nhiều hơn PNG hoặc JPEG? Về mặt logic, bạn sẽ chỉ kết thúc với những hình ảnh lớn gấp bốn lần, do đó, không có nhiều cải tiến. –

+0

Kích thước hình ảnh cao hơn nhưng tôi không thực hiện yêu cầu thứ hai để có được hình ảnh. Được gửi bên trong html. Vì vậy, không có tiêu đề một lần nữa. – zozo

+0

Ngoài ra tôi thấy điều này hữu ích nhưng tôi vẫn đang suy nghĩ. http://davidbcalhoun.com/2011/when-to-base64-encode-images-and-when-not-to – zozo

Trả lời

27

Nó chỉ hữu ích cho những hình ảnh rất nhỏ. Các tệp được mã hóa Base64 lớn hơn bản gốc. Lợi thế nằm ở việc không phải mở một kết nối khác và thực hiện một yêu cầu HTTP đến máy chủ cho hình ảnh đó. Lợi ích này bị mất rất nhanh vì vậy chỉ có một lợi thế cho số lượng lớn các hình ảnh riêng lẻ rất nhỏ.

+0

Một số CMS doanh nghiệp (như RedDot) cũng cần hình ảnh CSS để được "nối "- quá trình nhấp 4 lần. Tùy thuộc vào nền tảng của bạn nó có thể là một tiết kiệm thời gian. – ArleyM

8

độ dài thực tế của MIME-compliant dữ liệu nhị phân Base64 mã hóa là thường khoảng 137% chiều dài dữ liệu ban đầu, mặc dù cho thông điệp rất ngắn overhead có thể cao hơn nhiều do các overhead của tiêu đề . Rất gần, kích thước cuối cùng của dữ liệu nhị phân được mã hóa Base64 là bằng 1,37 lần kích thước dữ liệu gốc + 814 byte (đối với tiêu đề).

Nói cách khác, kích thước của dữ liệu được giải mã có thể xấp xỉ với công thức này:

bytes = (string_length(encoded_string) - 814)/1.37 

Nguồn: http://en.wikipedia.org/wiki/Base64#MIME

3

Một số nhược điểm như sau đã được đề cập trong bài này How much faster is it to use inline/base64 images for a web site than just linking to the hard file?

  • Hầu hết các hình thức lưu vào bộ nhớ cache đều bị đánh đập có thể gây tổn hại rất nhiều nếu hình ảnh được xem o ften - say, một logo được hiển thị trên mọi trang, thông thường có thể được lưu trong bộ nhớ cache của trình duyệt.
  • Sử dụng CPU khác.
+0

Giới thiệu về bộ nhớ đệm ... trang có thể được lưu vào bộ nhớ cache.Nhược điểm ở đây là việc xử lý dữ liệu mỗi lần. – zozo

+4

Đồng ý nhưng trong trường hợp ví dụ về logo có thể khác và nhiều trang trên trang web sẽ không được lưu vào bộ nhớ cache đầu tiên mà chúng được truy cập nhưng hình ảnh được lưu trong bộ nhớ cache của biểu trưng trên tất cả các trang này có thể được sử dụng mọi lúc bộ nhớ cache của trang. –

+0

@zozo Không nếu nội dung trên trang cập nhật, thì cả nội dung và hình ảnh sẽ cần phải được tải xuống và phân tích lại. – arve0

3

cũng thời gian phản hồi của trang HTML sẽ tăng lên, vì hình ảnh tải asyn trong trường hợp bình thường. ngay cả khi hình ảnh tải trễ bạn có thể bắt đầu thấy văn bản.

Một ưu điểm khác của CDN sẽ bị mất nếu chỉ phương tiện được lưu trong bộ nhớ cache trong CDN

lợi thế đó sẽ bị mất.

+1

bạn nghĩ gì nếu chỉ tải lên hình ảnh của base64? Vì tôi muốn gửi cùng với đối tượng json. –

Các vấn đề liên quan