Tối ưu performace khi sử dụng ảnh với srcset | Thuộc tính srcset của thẻ IMG

Поделиться
HTML-код
  • Опубликовано: 23 ноя 2024

Комментарии • 75

  • @F8VNOfficial
    @F8VNOfficial  Год назад +14

    ## Có thể bạn đã biết!
    NextJS có built-in component là Image, khi bạn sử dụng component này srcset sẽ được sử dụng tự động để đáp ứng tốt trên nhiều màn hình với ảnh 1x, 2x, v.v.
    ## Một hiểu nhầm lớn!
    Nhiều bài đăng trên mạng nói màn hình có pixel ratio là 2 nghĩa là 1px trong CSS sẽ dùng 2px vật lý là chưa chính xác, đúng là 4px. Hoặc 1px CSS trên màn hình có pixel ratio 3 sẽ dùng 3px vật lý là chưa chính xác, đúng phải là 9px các bạn nhé. Tư duy khá đơn giản là pixel là 1 điểm, khi scale nó thì phải tính theo cả 2 chiều x và y.
    (Thực chất pixel ratio có thể bị thay đổi khi tùy chỉnh độ phân giải trên màn hình. Ví dụ màn có 1920x1080 pixel vật lý và chỉnh độ phân giải cũng là 1920x1080 sẽ có pixel ratio là 1, nhưng chỉnh thành 960x540 lại có pixel ratio là 2).
    ## Áp dụng thực tế
    Thực chất, rất nhiều trang web sử dụng nhiều hình ảnh (trong video mình nói là ít, sorry mọi người 😘). Ví dụ như các trang thương mại điện tử, mỗi sản phẩm show ra đều có thumbnail đúng không nào? Vì vậy, cơ hội để các bạn sử dụng srcset rất nhiều nhé. Tuy nhiên, để sử dụng hiệu quả các bạn cần kết hợp với backend để tự động generate ra các size các của ảnh thay vì làm thủ công nhé. Vì vậy, nó sẽ phức tạp hơn, và khó áp dụng hơn nếu bạn chỉ là lập trình viên Frontend.
    ## Vấn đề tốn băng thông?
    Khi bạn sử dụng tài nguyên lớn hơn mức cần thiết thì máy chủ web và người dùng của bạn đều phải chịu tốn băng thông hơn. Phía máy chủ, tốn băng thông cho việc truyền dữ liệu về máy khách hàng. Phía khách hàng, tốn băng thông cho việc tải dữ liệu về. Đương nhiên, cả bạn và khách hàng của bạn đều phải chịu chi phí.
    Đối với trang web nhỏ thì bạn chỉ phải trả rất ít chi phí cho băng thông máy chủ, nhưng với trang truyền tải nhiều tài nguyên (như khóa học Pro của F8 phải truyền tải hình ảnh/video thông qua CDN) thì chi phí sẽ rất lớn. Khi đó, việc tối ưu hình ảnh góp một phần đáng kể vào chi phí về mặt cơ sở hạ tầng.
    ✅Để tìm hiểu về nhiều kiến thức hơn, các bạn hãy mua khóa học HTML, CSS Pro trước khi trở về giá gốc trong thời gian tới nhé: fullstack.edu.vn/landing/htmlcss/

  • @TTKH213
    @TTKH213 Год назад +1

    chất giọng này luôn xứng đáng 10 điểm 😁

  • @AnhPham-kq3fh
    @AnhPham-kq3fh 6 месяцев назад +1

    Dạ cho em hỏi làm như thế nào để hiển thị được giao diện phần thay đổi kích thước ở phút 21:23 v ạ?

  • @nguyenxuanbach2672
    @nguyenxuanbach2672 Год назад +1

    Chào a Sơn Đặng, a và ekip có thể làm series về Redux Toolkit và Redux Saga được không ạ?

  • @maiphuchoang7170
    @maiphuchoang7170 Год назад +1

    Cầu mong 1 video về Authentication a Sơn ơi :((

  • @QuanNguyen-nx9td
    @QuanNguyen-nx9td Год назад

    Cám ơn em, hay quá

  • @vuongqtvn
    @vuongqtvn Год назад

    Tuyệt vời quá anh😊 trước chỉ mỗi lazy load

    • @sondangf8
      @sondangf8 Год назад +1

      Cách này phải dùng NextJS/Backend thì mới tiện được. Ông nào mới học HTML, CSS thì phải resize ảnh thủ công mệt lắm 😥😥

  • @tranconghung11231
    @tranconghung11231 Год назад

    khi nào có tiếp khóa offline ạ

  • @khavovan8201
    @khavovan8201 Год назад +1

    Anh cho em hỏi là làm sao để nắm vững kiến thức như anh được không ạ ? Hi vọng hôm nào a chia sẻ phương pháp học chắc kiến thức đi ạ ...

    • @F8VNOfficial
      @F8VNOfficial  Год назад +7

      Dành nhiều thời gian mày mò, tìm tòi và hệ thống kiến thức đã học bằng cách viết ra nha em ơi 😍

  • @YunaCrystal3009
    @YunaCrystal3009 Год назад

    Cái extension show ra cái bảng emoji của a tên gì vậy ạ

  • @ThanhNguyen-zk4sy
    @ThanhNguyen-zk4sy 10 месяцев назад

    Anh có thể làm video cụ thể về việc backend để tự động generate ra các size các của ảnh được k ạ

    • @F8VNOfficial
      @F8VNOfficial  10 месяцев назад

      Giờ anh chưa thu xếp được để làm ngay. Nhưng em học backend thì ngôn ngữ nào cũng làm được hết, biết thao tác với file và ảnh là được, cái này chỉ là resize ảnh và save lại thôi nha em.

    • @ThanhNguyen-zk4sy
      @ThanhNguyen-zk4sy 10 месяцев назад

      @@F8VNOfficial ngoài tối ưu ảnh thì mình cần tối ưu những gì ạ

  • @yennhipham6624
    @yennhipham6624 Год назад

    anh ơi. anh live work with me đi ạ. dạo này em bị mất động lực ời, anh live cho em xin miếng động lực với ạ :

  • @modivation6551
    @modivation6551 Год назад +1

    pixel trong css và pixel trên thực tế nó khác nhau như thế nào nhỉ anh em. Tôi cứ không hiểu đoan này . Tưởng DPI càng cao thì nó càng hiển thị rõ nét

    • @F8VNOfficial
      @F8VNOfficial  Год назад +2

      Ví dụ bạn có độ phân giải vật lý 2560x1440px, bạn cấu hình trên phần mềm ở độ phân giải này nhưng lại scale 200% (trong cài đặt display) thì lúc này bạn chỉ đạt 1280x720px CSS. Nếu bạn scale 100% thì bạn có được 2560x1440px khi CSS.

  • @NamLe-ok7hy
    @NamLe-ok7hy Год назад

    Anh ơi cho em hỏi cách tạo button switch 2 thư viện với nhau đc ko a?

  • @laptrinhcungngan
    @laptrinhcungngan Год назад

    Bài này hay quá

  • @nl.tandat
    @nl.tandat Год назад

    Chào anh Sơn, em làm một học viên của khoá học HTML&CSS cơ bản, em theo học và thực hành các bài trong khoá học nhưng hiện đến bài 70 (Thực hành CSS position relative) của khoá học thì gặp lỗi dù phần code đã làm theo yêu cầu nhưng vẫn báo sai, không chỉ em mà em thấy một số bạn cũng gặp vấn đề này! Mong anh giải đáp sự cố trên!

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      Hi em. Có lỗi thì em báo anh anh tiếp nhận và check lại thôi em nhé. Vì bài test trên web nó có thể ảnh hưởng bởi nhiều yếu tố như trình duyệt khác nhau, cài đặt các tiện ích gây ảnh hưởng vd như dark theme, mấy ext mà nó sửa html css của trang cũng có thể làm sai lệch bài test. Em thử bằng Chrome và tắt các tiện ích/hoặc tạo profile riêng cho việc học và không cài ext trên account đó nhé.

  • @trantruong1657
    @trantruong1657 Год назад +1

    video này đưa vào trang của khóa html css pro luôn đi anh :>

    • @nguyenvannam5095
      @nguyenvannam5095 Год назад +1

      Anh Sơn đưa rồi mà, mình đã bookmark =))

    • @F8VNOfficial
      @F8VNOfficial  Год назад +1

      Anh đưa vào khóa Pro trong chương Responsive nha em, vì cái này nó giúp làm responsive hình ảnh á.

    • @F8VNOfficial
      @F8VNOfficial  Год назад +2

      @@nguyenvannam5095 Nam tia chớp ⚡

    • @nguyenvannam5095
      @nguyenvannam5095 Год назад +1

      @@F8VNOfficial Anh đừng nói thế , e thích lắm 🥲

  • @lanhanhnguyen4577
    @lanhanhnguyen4577 9 месяцев назад

    anh Sơn đỉnk

    • @F8VNOfficial
      @F8VNOfficial  9 месяцев назад

      Lâu lắm mới thấy em comment 🤣

  • @anphu5626
    @anphu5626 Год назад

    Anh ơi, cho em hỏi anh có ra thêm phần react k

    • @F8VNOfficial
      @F8VNOfficial  Год назад +1

      Phần này chắc anh em cứ lấy API đó làm tiếp em ơi, giờ anh đang overload quá chưa làm tiếp ngay được ý :(

  • @anhucle2022
    @anhucle2022 Год назад

    Cho e hỏi, nếu 1 trang landing page có tầm 9 section mà section nào cũng có 1 img png khá to (org size > 500 x500) thì có nên tối ưu hình ảnh k ạ

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      Có em, ngoài áp dụng các cách trên em thêm lazy load cho các hình nằm xa phía dưới màn hình đầu tiên nữa nhé. Ảnh xuất hiện ở màn đầu tiên khi truy cập thì ko cần lazy load. Nếu phục vụ cho traffic lớn thì đẩy cả landing lên CDN cache nữa.

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      Mà 500x500 cũng đâu to lắm em, em CSS nó kích thước bao nhiêu? Đã đáp ứng được màn 2x chưa em ơi?

  • @thienpham.h5954
    @thienpham.h5954 Год назад

    giọng anh rất lôi quấn

  • @ab_life_review
    @ab_life_review Год назад

    a có thể cho e xin từ khóa về việc a seo web fullstack edu thế nào ko ạ. e thấy a dùng helmet để dynamic meta tag tuy nhiên thì khi view source ko thấy thay đổi gì thì chắc a vẫn dùng csr . Có thể cho e xin từ khóa để tham khảo đọc hiểu về vấn đề này k ạ

    • @F8VNOfficial
      @F8VNOfficial  Год назад +1

      Anh dùng prerender server em ơi, cái này cần biết setup máy chủ chút em nhé. Đại khái là nếu gặp bots thì anh sẽ trả về cho nó bộ source HTML đầy đủ thay vì chỉ có #root rỗng nhé em.

    • @ab_life_review
      @ab_life_review Год назад

      @@F8VNOfficial quào, này thì chắc hơi quá sức vs e r, chắc tìm cách migrate sang next js mất. e cũng tìm hiểu về setup các thứ r mà mấy ngày nay cx chưa nghĩ ra đc gì

    • @ab_life_review
      @ab_life_review Год назад

      @@F8VNOfficial e tìm theo cách của a thì chắc là config vào file conf của docker mà thấy cx toàn bài viết về angular

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      ​@@ab_life_review Nếu em dùng docker thì mới cần config trong docker, em cài nginx ở đâu thì cấu hình ở đó nhé. Còn prerender server em dựng lên trước (docker hoặc cài thẳng lên máy chủ), rồi từ nginx em pass sang prerender server nếu là bots nhé. Em xem trên Github nó có đủ tài liệu đấy: github.com/prerender/prerender

    • @ab_life_review
      @ab_life_review Год назад

      @@F8VNOfficial ok a ạ, e cảm ơn a nhiều ạ.

  • @seaeaa
    @seaeaa Год назад

    mong khóa js pro có thể học lỏm thêm tư duy của senior 😗

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      Haha anh intern lâu năm thôi 🤣

  • @devdaytoan
    @devdaytoan Год назад

    này có trong khóa học pro ko a

    • @F8VNOfficial
      @F8VNOfficial  Год назад

      Có em ơi, trong chương responsive em nhé

  • @chauphan33940
    @chauphan33940 Год назад

    anh ơi, khi nào có khóa JS pro ạ

    • @F8VNOfficial
      @F8VNOfficial  Год назад +3

      Tầm tháng 10 có thể anh preorder nha em, giờ anh hoàn thiện nốt 2-3 chương cuối khóa HTML đã, làm chi tiết quá mất cả năm rồi em ạ.

    • @chauphan33940
      @chauphan33940 Год назад

      @@F8VNOfficial vậy lúc khóa JS Pro ra mắt thì đã hoàn thiện chưa hay cũng giống như khóa HMTL lúc mới ra ạ

    • @sondangf8
      @sondangf8 Год назад +3

      @@chauphan33940 Anh sẽ làm khác, khi ra phải gần xong rồi, tầm 70% mới ra mắt, không để anh em phải mua xong chờ nữa nhé!

    • @chauphan33940
      @chauphan33940 Год назад

      @@sondangf8 vậy tốt quá anh ạ

    • @VinhNguyen-ko8cp
      @VinhNguyen-ko8cp Год назад

      @@sondangf8 còn khóa React JS free khi nào mình hoàn thiện xong phần xây dựng dự án Tik Tok v anh

  • @khoacode
    @khoacode Год назад +1

    Cmt đầu video hay quá a

  • @TsukkiAyaka
    @TsukkiAyaka 2 месяца назад

    Dạ cho em hỏi làm như thế nào để hiển thị được giao diện phần thay đổi kích thước ở phút 21:23 v ạ?

    • @TsukkiAyaka
      @TsukkiAyaka 2 месяца назад

      em được rồi

    • @inhhellcat8420
      @inhhellcat8420 2 месяца назад

      Bật lên kiểu gì thế ạ, chỉ mình với 🙆‍♂

    • @TsukkiAyaka
      @TsukkiAyaka Месяц назад

      ​@@inhhellcat8420 bạn xem phần bên phải của giao diện bạn thấy khác bạn cái gì thì bạn nhìn theo rồi đổi là đc