Base64 Image - Nhúng Hình Ảnh Vào CSS Với Data URI

Thảo luận trong 'Mã Nguồn' bắt đầu bởi Pussy, Thg 11 9, 2016.

  1. Pussy

    Pussy New Member Chuyển tiền Tìm chủ đề

    Bài viết:
    Tìm chủ đề
    950
    Base64 image – Lợi hại?

    Base64 là một thuật ngữ được sử dụng rất rộng rãi trên thế giới. Tuy nhiên, việc áp dụng Base64 vào website chỉ mới được áp dụng trong ít năm trở lại đây. Vậy Base64 là gì? Và sử dụng nó và website có những lợi ích/tổn hại nào? Tôi sẽ hướng dẫn các bạn các sử dụng cũng như phân tích mặt lợi hại của nó trong bài viết này.

    Base64 là gì?

    Base64 là một chương trình mã hóa chuỗi ký tự bằng cách dùng thay thế các ký tự trong bảng mã ASCII 8 bit thông dụng thành bảng mã 6 bit. Nó thường được sử dụng để mã hóa các tập tin đa phương tiện (hình ảnh, âm thanh, video,…). Ký tự 64 trong Base64 là đại diện cho 64 ký tự trong bãng mã ASCII. Base64 thường được sử dụng trong việc truyền tải email. Tuy nhiên, ngày nay người ta đã sử dụng nó vào việc truyền tải hình ảnh trên website.

    Cách sử dụng Base64 Image

    Trước tiên, để sử dụng được thì chúng ta cần phải chuyển đổi từ định dạng hình ảnh sang định dạng ký tự ASCII bằng một số công cụ trực tuyến như sau: Web coder tools, Web Semantics Data URI Converter. Đây là hai công cụ chuyển đổi online phổ biến được dùng, cách sử dụng cũng đơn giản thôi, chúng ta chỉ việc chọn file hình cần chuyển đổi, sau đó nhấp vào convert. Chương trình sẽ upload hình ảnh lên server và sẽ tiến hành xử lý để kết quả trả về ở dạng đã encode Base64.

    Kết quả trả về có 2 dạng, một là nó chèn hẳn vào trong thẻ img và chúng ta chỉ việc copy về và sử dụng thôi.

    Hoặc nó trả về ở dạng background-image để chúng ta chèn vào css.

    Ví dụ:

    Mã:
    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAT.....">
    Hoặc chúng ta có thể dùng với selector trong css

    Mã:
    .base64{
        background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAT.....');
        background-repeat: repeat;
    }
    Page speed optimize

    Nắm bắt được nhu cầu hiện tại. Do đó, một số nhà cung cấp hosting đã đi kèm dịch vụ có tên là Page Speed Optimization. Khi bạn sử dụng hosting của họ và kích hoạt chứ năng đó, hosting sẽ tự động chuyển đổi kết quả trả về cho client là hình ảnh đã được convert. Ngoài ra, các tập tin javascript và css đều được compress lại. Rất tiện dụng và không phải mất nhiều thời gian.

    Đây là kết quả khi izwebz sử dụng tính năng Page Speed Optimization của nhà cung cấp dịch vụ Dreamhost.

    Điểm hại khi dùng Base64 image

    Như các bạn thấy đấy, việc sử dụng hoàn toàn không khó, chỉ việc click, copy và past. Tuy nhiên, chỉ khi sử dụng nó thì bạn mới thấy nó có những điểm bất lợi như sau:
    • Đoạn ký tự được conver sẽ có dung lượng lớn hơn file gốc khoảng 3-5%. Đối với ảnh lớn có thể lên đến 10-20%
    • Hình ảnh được tạo ra khi dùng Base64 Image sẽ không được lưu cache ở trình duyệt. Do đó, khi bạn load lại thì cũng có nghĩa là sẽ load lại toàn bộ hình.
    • Kết quả chuổi ký tự hình ảnh Base64 rất dài dòng, để dàng làm rối đội hình css hoặc html. Đặc biệt là các hình ảnh có kích thước file lớn.
    • Nếu bạn muốn thay đổi hoặc có bổ sung thêm 1 điểm gì đó trong hình ảnh, bạn buộc lòng phải conver lại hình ảnh đó.
    Điểm lợi của Base64 image

    Cả đám hại phía trên có lẽ đã làm cho bạn hơi bị nản khi dùng base64 image. Tuy nhiên, hãy xem các phân tích về mặt lợi mà nó đem tới cho chúng ta khi áp dụng vào website
    • Nâng cao hiệu xuất khi tải website: Nghe có vẽ cực kì vô lý vì dung lượng của base64 image lơn hơn cả file gốc mà. Tuy nhiên, bạn hãy quan sát vấn đề từ nhiều phía. Mọi tài nguyên trên website khi truyền tải từ server đến client đều phải thông qua các HTTP request (tất cả các hình ảnh, javascript, stylesheet,…) và sẽ có rất nhiều request được đưa ra (đặc biệt là các hình ảnh dùng trong stylesheet). Điều đó làm cho server và cả browser phải mất thời giản để tiến hành xử lý các request.
    • Nhưng khi dùng base64 image thì chuỗi ký tự hình ảnh đó đã được đính kèm sẵn trong tập tin stylesheet hoặc trong thẻ img của tập tin html rồi, tất cả chỉ cần 1 request duy nhất để tải stylesheet về thôi là chúng ta có cả hình ảnh trong đó. Rất nhanh chóng và đạt hiệu suất truyền tải cao.
    • Nếu sử dụng base64 image cho các tập tin như icon rất hiệu quả? Vậy dùng cho hình to có hiệu quả không? Tất nhiên, nhưng mà phải tùy từng trường hợp. Ví dụ, nếu sử dụng trong các gallery hoặc album ảnh sẽ rất hiệu quả. Vì sẽ có rất nhiều request đưa ra để tải hình ảnh, và đối với các ảnh có dung lượng lớn thì các request sẽ phải xử lý tuần tự, tải xong nhóm request tập tin ảnh này thì mới tiến hành tải nhóm ảnh khác. Do đó, dùng Base64 trong trường hợp này sẽ rất tiện.
    Dùng hay không?

    Tôi biết khi bạn đọc đến dòng này thì có sẽ một số bạn đã quyết định được dùng hay không? Tuy nhiên, cũng sẽ có một nhóm bạn đang bối rối, không biết có nên dùng không?

    Vậy, nếu bạn là một người thích khám phá và học hỏi. Hãy trải nghiệm thử xem nhưng gì tôi nói ở trên có đúng với thực tế không? Rồi bạn sẽ có được kết luận là dùng hay không dùng.

    Nhúng hình ảnh vào CSS với Data URI

    Có một thủ thuật CSS rất tiện lợi mà không phải ai cũng biết đó là nhúng trực tiếp hình ảnh vào nội dung CSS bằng cách sử dụng Data URI.

    Vậy Data URI là cái gì?

    Hiểu một cách ngắn gọn thì Data URI là dữ liệu đã được mã hóa theo chuẩn base64 sau đó được chèn vào thuộc tính chỉ định nguồn nội dung (url của thuộc tính background-image trong CSS hoặc src của thẻ IMG trong HTML)

    Một chuỗi Data URI của một hình ảnh sau khi mã hóa sẽ có dạng:

    Mã:
    data:[][;charset=][;base64]
    Đây là một chuỗi Data URI của hình ảnh sau khi được mã hóa, bạn có thể copy đoạn code này dán trực tiếp vào thanh address bar của trình duyệt để xem:

    Mã:
    data:image/png;base64,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
    Bạn có thể thấy một điều khá rắc rối là độ dài của chuỗi Data URI tỉ lệ thuận với kích thước hình ảnh. Vậy nên bạn cần cân nhắc kĩ khi sử dụng kĩ thuật này cho các hình ảnh phức tạp và nhiều màu sắc.

    Dùng nó như thế nào?

    Cách dùng nó rất đơn giản, như đã nói ở trên, bạn có thể chèn chuỗi này trực tiếp vào đoạn CSS của đối tượng chứa hình ảnh hoặc chèn vào thuộc tính SRC của thẻ IMG.

    Cách 1: chèn vào CSS

    Mã:
    ul li {
    background: url(data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7) no-repeat;
    }
    Cách 2: chèn vào HTML

    Mã:
    [FONT=Rokkitt, Arial, Helvetica, sans-serif][/FONT]
    Lợi ích của việc dùng Data URI?

    Cái lợi lớn nhất của việc dùng Data URI là giảm thiểu các HTTP Request đến server trong quá trình load trang vì hình ảnh đã được chèn sẵn vào file CSS (hoặc HTML), nhờ đó giảm tải cho server cũng như cải thiện phần nào tốc độ load trang web của bạn.

    Làm sao để tạo ra chuỗi Data URI từ một file hình ảnh?

    Có rất nhiều cách để chuyển một hình ảnh thành một chuỗi URI, bạn có thể sử dụng các công cụ chuyển đổi online như: http://dataurl.net/#dataurlmaker hoặc có thể tìm thêm nhiều công cụ khác bằng cách tra Google với từ khóa: "Data URI generator"

    Hoặc bạn có thể sử dụng PHP để tạo ra chuỗi URI của mình, cách này đơn giản hơn nhiều:

    echo base64_encode(file_get_contents("../images/folder16.gif"));

    Hoặc có thể tạo ra chuỗi Data URI bằng phương thức save() của HTML5 Canvas.

    Trình duyệt nào hỗ trợ Data URI?

    Câu trả lời là tất cả trình duyệt, ngoại trừ các trình duyệt IE 7 trở về trước (lại là IE, cái trình duyệt đáng chán). Nhưng không sao, để giải quyết khuyết điểm này, ta có thể sử dụng 1 file CSS riêng và vẫn sử dụng cách truyền thống để load hình ảnh nếu người dùng đang truy cập bằng IE.

    Nếu bạn vẫn cứ thích sử dụng Data URI trên các trình duyệt IE cũ, có thể tham khảo cách này

    Một số lưu ý:
    • Kích thước của chuỗi Data URI đôi khi có thể lớn hơn cả kích thước của file hình ảnh, tuy nhiên bạn có thể sử dụng GZip để nén nội dung trang web của bạn lại (kĩ thuật này mình sẽ có 1 bài nói rõ về sau)
    • Giới hạn kích thước hình ảnh có thể chèn vào chuỗi URI trên IE8 là 32768 bytes
    • Vì chèn trực tiếp tài nguyên vào file CSS cho nên các file này sẽ có kích thước rất lớn, bạn nên cache các file CSS lại để khỏi phải load lại file này vào lần sau
    • Bạn có thể dùng Data URI cho các dạng dữ liệu khác, không nhất thiết phải là hình ảnh
     
    Last edited by a moderator: Thg 8 9, 2018
  2. Đang tải...
Trả lời qua Facebook

Chia sẻ trang này