logo

Đang load dữ liệu

logo devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER

Đào tạo - Phần mềm - Cho thuê nhân sự

  • 0969.609.003
  • 0978.611.889
  • Trang chủ
  • Các khoá đào tạo
    • Chuyên đề WEB - PHP

      • Lập trình web với HTML5 - CSS3- JQuery - Bootstrap - Ajax - [36 giờ]
      • Lập trình web frontend - reactjs - [75 giờ]
      • Lập trình web với mã nguồn mở PHP&MYSQL - PHP FRAMEWORK [126 giờ]

      Chuyên đề Mobile

      • Lập trình Games/Apps trên nền tảng Android - [120 giờ]
      • Lập trình Games/Apps trên nền tảng IOS - [120 giờ]

      Chuyên đề JAVA

      • Ngôn ngữ lập trình hướng đối tượng với java - [40 giờ]
      • Lập trình ứng dụng với java - [100 giờ]
      • Lập trình web site với java framework (JPA, HIBERNATE, SPRING MVC, SPRINGBOOT) - [276 giờ]

      Chuyên đề NETWORK/SECURITY

      • Khoá học Quản trị hạ tầng mạng CCNA v6 - [72 giờ]
      • Khoá học quản trị hệ thống với Windows SERVER 2012- [72 giờ]
      • Chuyên gia bảo mật hệ thống CompTIA + - [110 giờ]

      Chuyên đề .NET

      • Nền tảng lập trình hướng đối tượng với C# - [40 giờ]
      • Lập trình ứng dụng WINDOWS FORM - [100 giờ]
      • Lập trình Web với ASP.NET MVC 5, WebAPI - [145 giờ]

      Chuyên đề khác

      • Ngôn ngũ lập trình C/C++ - [80 giờ]
  • Lập trình cho trẻ em
  • Dịch vụ
    • Đào tạo theo như cầu
    • Cung cấp thiết bị - Phần mềm
    • Tư vấn - Thiết kế mạng hạ tầng
    • Tư vấn - Triển khai dịch vụ mạng
    • Tư vấn - Tư vấn, triển khai giám sát hệ thống
    • Thực tập dự án
  • Lịch khai giảng
  • Tin tức
    • Tin tức và sự kiện
    • Tin hoạt động
    • Tin công nghệ
    • Hội thảo, workshop, Codecam
    • Thông tin việc làm
    • Cẩm nang chia sẻ kiến thức
  • Tiện ích
  • Liên hệ

Tin công nghệ

Nov - 2018

26

12 cách tối ưu hoá website – thời đại của mobile-first

Tin công nghệ

12 cách tối ưu hoá website – thời đại của mobile-first

 

Lập trình viên sau khi phát triển xong một website, website chạy ổn định, không bug thì coi như đã hoàn thành.

Câu chuyện của năm 2018 có đơn giản như vậy?

Tại sao phải tối ưu hoá website?

Theo số liệu cung cấp bởi google

fact-1

  • User facts:
    • 47% người dùng muốn trang web load dưới 2 giây và 40% sẽ bỏ cuộc nếu trang web mất trên 3 giây để load.
    • 79% người dùng sẽ không ghé thăm lại một website có performance tồi.
    • 52% người dùng cho rằng website load nhanh ảnh hưởng trực tiếp đến độ trung thành của họ.
    • 44% người dùng than phiền về tốc độ web với bạn của họ.
    • 1 giây tăng lên trong load-time giảm 16% độ hài lòng của người dùng.

fact-2

  • Website facts:
    • 79% có kích thước trên 1MB, 53% trên 2MB và 23% trên 4MB.
    • Mobile load-time đã giảm 7 giây nhưng vẫn tốn khoảng 15 giây, 53% websites tốn hơn 3 giây để hiển thị.
    • Mobile traffic chiếm hơn một nửa web traffic trên toàn thế giới, nhưng tỷ lệ chuyển đổi thành lợi nhuận lại thấp hơn trên các thiết bị máy tính.

    → speed equals revenue

    • 70% landing page mất hơn 5 giây để hiển thị.
    • Google sử dụng một deep neural network với độ chính xác 90% để cho ra kết quả sau:
      • giảm load-time được 10 giây, tỷ lệ người dùng tiếp tục sử dụng website tăng 123%
      • ngược lại, số lượng elements trên trang web tăng từ 400 lên 6000, tỷ lệ chuyển đổi thành lợi nhuận giảm 95%

    → faster is better and less is more

    • Thử nghiệm thực tế:
      1. Walmart:
      • Mỗi 1 giây load-time giảm, số lượng đặt hàng tăng 2%
      • Mỗi 100ms load-time giảm, lợi nhuận tăng 1%
      • Tỉ lệ đặt hàng có thể giảm 25% với mỗi 1 giây tăng trong load-time.
      1. Amazon A/B Test:
      • Chỉ 100ms load-time có thể khiến lợi nhuận giảm đáng kể.
      1. Google
      • Traffic giảm 20% nếu load-time tăng thêm 0.5 giây
      • Google đã rank các website theo mobile-first index, tốc độ load trang trên di động sẽ ảnh hưởng trực tiếp đến kết quả index trên Google search engine.

SPEED DOES MATTER

fact-3

Load-time tăng 1 giây:

  • Giảm 11% lượng pageviews
  • Giảm 16% sự hài lòng của khách hàng
  • Giảm 7% lợi nhuận

Ở Việt Nam, website của Thế giới di động được giao KPI hiển thị dưới 300ms, còn tiki và đặc biệt là sendo có vẻ không quan tâm đến việc này lắm. Các bạn có thể dễ dàng thấy trải nghiệm người dùng ở đâu tốt hơn, ở đâu mọi người mua đồ nhiều hơn.

Dù sao thì trong tương lai, các website chắc chắn sẽ phải để ý đến việc optimize webservice. Đây vừa là cơ hội và cũng là thách thức với các lập trình viên. Liệu tất cả những lý do trên đã khiến các bạn phải ngồi vào bàn và bỏ thời gian ra làm một website chạy nhanh hơn 1-2 giây?

Long story short:

Hãy làm trang của bạn chạy thật nhanh trên các thiết bị di động và bắt đầu tư duy theo hướng mobile-first.

Cùng nhìn lại một chút quá trình vào một trang web của người dùng theo một flow đơn giản:

flow

  1. người dùng nhập địa chỉ web → chuyển đến mạng Internet
  2. DNS server (Domain Name Service server) chuyển từ URL thành địa chỉ IP → trỏ đến server có IP yêu cầu
  3. server nhận request, xử lý request
  4. chuyển lại response cho người dùng → browser hiển thị kết quả.

Tin tốt là chúng ta có thể optimize trang web ở tất cả các bước còn tin xấu là ở mỗi bước, thời gian cải thiện có thể chỉ được tính bằng ms (1/1000 giây 😅). Có nên thực sự quan tâm?

  • Nếu trang web của bạn là một blog cá nhân, không có giá trị kiếm tiền, có < 50 người truy cập cùng lúc (như blog này) thì việc optimize không mang lại nhiều giá trị.
  • Bạn kiếm tiền từ trang web của bạn và có trung bình vài nghìn hoặc vài trăm nghìn lượt truy cập cùng lúc. Ngoài lý do về lợi nhuận, nếu không optimize web service, server có thể bị quá tải do requests của khách hàng → bottle neck → load-time kéo dài, thậm chí out of service. Thay vì bỏ tiền mua server khủng hơn, hãy bỏ chút thời gian để sắp xếp và thiết kế lại service để đem lại performance ổn định với chi phí rẻ hơn.

Làm thế nào?

  • Đầu tiên hãy xem website của bạn đang có vấn đề gì bằng công cụ của Pagespeed của google
  • Tham khảo các rules của google cho việc tăng tốc độ load trang:
    • Hạn chế việc redirect tại landing page
    • Enable compression
    • Cải thiện tốc độ phản hồi của server
    • Tận dụng bộ nhớ cache của browser
    • Tối giản hoá các tài nguyên
    • Tối ưu hiển thị ảnh
    • Tối ưu hoá việc load CSS
    • Ưu tiên các nội dung cần được hiển thị trước
    • Xoá bỏ các Javascript gây ra render-blocking

Sau tất cả, google là công cụ tìm kiếm lớn nhất thế giới, làm mọi thứ theo chuẩn của họ chắc chắn không phải một lựa chọn tồi.

Để đầy đủ hơn, mình sẽ thêm một số phương pháp và chia thành 4 loại tương ứng với từng giai đoạn khi người dùng truy cập website.

Loại 1: User → Internet

Hoàn toàn nằm ngoài khả năng của chúng ta, tuy nhiên vẫn có thể đảm bảo việc khác hàng có được trải nghiệm đủ tốt với tốc độ mạng cực chậm bằng việc xây dựng progressive web app và sử dụng service-worker cho trang web của bạn.

Loại 2: Internet → Server

1. Sử dụng DNS server

DNS-server

Việc chuyển từ URL sang địa chỉ IP server do DNS server đảm nhận, và nó cũng chỉ là một máy tính, nhanh chậm khác nhau. Các dịch vụ cung cấp host thường cũng sẽ có kèm theo dịch vụ cung cấp DNS, tuy nhiên tốc độ có thể khác nhau → tốc độ load trang cũng bị phụ thuộc.

Cách khắc phục

  • Để tiết kiệm được khoảng 20-30ms load-time, bạn nên cân nhắc chuyển qua dùng DNS server của một số nhà cung cấp khác.
  • Một số nhà cung cấp dịch vụ DNS (như cloudflare) cho phép bạn sử dụng DNS service miễn phí, tuy nhiên hãy tìm hiểu xem ở khu vực địa lý mà website của bạn hay được sử dụng DNS nào có tốc độ nhanh nhất.

2. Sử dụng CDN

CDN-services

Content Delivery Network (CDN) là hệ thống các edge servers được đặt tại các vị trí địa lý khác nhau để có thể truyền tải nội dung từ một origin ở khoảng cách xa nhanh chóng hơn nhờ cơ chế cache.

Thay vì đến tận server (origin, ở xa) để lấy các tài nguyên thì người dùng có thể lấy ngay tại CDN (distribution, ở gần), chính vì thế load-time sẽ được giảm đáng kể.

Để hiểu rõ hơn những lợi ích của việc sử dụng CDN bạn có thể đọc bài viết vô cùng có tâm của sempai Đinh Hoàng Long về CDN.

Theo cdnperf.com, tính đến thời điểm này JSDELIVR đang dẫn đầu trong việc cung cấp dịch vụ CDN trên toàn cầu. Ở châu Á, vị trí quán quân thuộc về CDNetworks. Cloudflare CDN, Azure và CloudFront của AWS cũng lọp top 10.

Cloud CDN (của google) mà mình đang dùng ở vị trí nào đó không xuất hiện trong bảng xếp hạng 😭

Loại 3: Server

3. Hosting

Thời đại của cloud computing, các service hầu hết được đưa lên mây. Việc chọn một hosting service phù hợp với nhu cầu của trang web cũng là một yếu tố quan trọng ảnh hưởng đến tốc độ của trang web.

  • Nhu cầu nhỏ → shared hosting.
  • Nhu cầu vừa phải → VPS hosting.
  • Nhu cầu lớn → Dedicated server.

Nếu có thể, hãy tham khảo ý kiến từ một lập trình viên, nhân viên quản trị hệ thống hoặc sử dụng dịch vụ của một số nhà cung cấp lớn như Amazon web service, Microsoft Azure, Google cloud,…

qmau.me đang được host với 300$ free của Google cloud VPS, CPU trung bình khoảng 1% 😅

4. Cải thiện tốc độ phản hồi của server

Google rất khó tính, họ cho rằng phản hồi của server nên dưới 200ms. Việc server phản hồi chậm có thể do một trong những lý do sau:

  • Sử dụng framework, ngôn ngữ không tối ưu
  • Logic quá phức tạp → việc xử lý chậm
  • Các components của server tốn nhiều thời gian để liên kết

    Ví dụ: sử dụng web server và database server riêng → mất thêm độ trễ của network vào thời gian phản hồi của webserver.

  • Mạng chậm (lý do khách quan, bỏ tay trả về).

Cách khắc phục

  • Low level:
    • Sử dụng các ngôn ngữ, framework có tốc độ xử lý tốt (không dùng fortran để code web).
    • Đơn giản hoá code, sử dụng kiến thức về cấu trúc dữ liệu, giải thuật 😅
    • Với website có thể dùng cache (redis, memcached), cache trong database để tăng tốc độ phản hồi (tối ưu cache memory lại là một câu chuyện khác)
  • High level:
    • Xây dựng hệ thống với độ trễ giữa các clusters thấp → việc của quản trị viên hệ thống.

5. Tối giản hoá các tài nguyên

Khi load trang web, các file html, css, js, script sẽ được load để hiển thị trên browser. Tuy không quá nặng nhưng việc đơn giản hoá, không sử dụng thừa code trong các tài nguyên được load cũng sẽ cải thiện tốc độ load cho trang web.

Cách khắc phục

  • Minify HTML
  • Minify CSS
  • Minify Javascript
  • Có thể cài PageSpeed Module của google cho webserver (apache, nginx) và mọi thứ cứ để module lo.
  • Học sử dụng gulp và viết gulp task cho việc minify tài nguyên (worth it).

6. Tối ưu hiển thị ảnh

Ảnh có thể coi là tài nguyên chiếm nhiều load-time nhất của một trang web, việc tối ưu được hiển thị ảnh đóng vai trò quan trọng trong việc cải thiện load-time của một trang web.

Ngày nay người dùng sử dụng rất nhiều các thiết bị khác nhau để có thể truy cập vào trang web của bạn. Với layout bạn có thể giải quyết bằng responsive design, còn với ảnh câu chuyện sẽ rắc rối hơn một chút.

Cách khắc phục

  • Sử dụng ảnh phù hợp với kích cỡ màn hình người dùng. Tham khảo các best practices cho việc hiển thị ảnh responsive để tiết kiệm tài nguyên.
  • Sử dụng các phương thức nén ảnh phù hợp:
    • GIF, PNG là phương thức nén lossless, ảnh sau khi nén sẽ có chất lượng gần như ảnh gốc, tỉ lệ nén thấp.
    • JPEG là phương thức nén lossy, ảnh sau khi nén có chất lượng giảm so với ảnh gốc tuy nhiên tỉ lệ nén có thể gấp 10 lần GIF và PNG.
    • Sử dụng các phương thức nén hiện đại hơn như JPEG 2000, JPEG XR hoặc WebP để tăng tốc độ load.

7. Tối ưu hoá việc load CSS

Một trang web sẽ được hiển thị khi load đầy đủ html, css, js. Nếu file css, js có kích thước quá lớn sẽ khiến trang web bị render-blocking, khiến tốc độ load trang tăng đáng kể.

Cách khắc phục

  • Inline các file css hoặc js nhỏ bằng thẻ

Các bài viết cùng chủ đề

Việt Nam khả năng thiếu 150.000 đến 200.000 nhân sự IT mỗi năm
Việt Nam khả năng thiếu 150.000 đến 200.000 nhân s...
Tổng quan ngành khoa học máy tính
Tổng quan ngành khoa học máy tính
8 xu thế công nghệ đáng chú ý nhất trong năm 2021
8 xu thế công nghệ đáng chú ý nhất trong năm 2021...
Tìm hiểu về API? Tại sao API lại được trọng dụng!
Tìm hiểu về API? Tại sao API lại được trọng dụng!...
Học ngôn ngữ lập trình nào để bắt kịp xu thế công nghệ năm 2021
Học ngôn ngữ lập trình nào để bắt kịp xu thế công ...
Nên làm việc ở công ty Product hay công ty Outsourcing?
Nên làm việc ở công ty Product hay công ty Outsour...

Các khóa đào tạo chuyên đề

Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
Lập trình ứng dụng trên nền tảng android Lập trình ứng dụng trên nền tảng android
Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack

Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
Lập trình ứng dụng với WINDOWS FORM Lập trình ứng dụng với WINDOWS FORM
Lập trình ứng dụng với JAVA (FORM) Lập trình ứng dụng với JAVA (FORM)
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
Lập trình frontend với reacjs (Full) Lập trình frontend với reacjs (Full)
DEVMASTER DEVMASTER
Viện Công Nghệ Và Đào Tạo Devmaster

DEVMASTER ACADEMY

Địa chỉ: Tầng 6 - Tòa nhà VIỆN CÔNG NGHỆ
Số 25, Vũ Ngọc Phan - Láng Hạ - Đống Đa - Hà Nội

Hotline: 0969 609 003 | 0978 611 889

devmaster.contact@gmail.com

hna.tvchung@gmail.com

CÁC KHÓA HỌC CHUYÊN ĐỀ

  • Thiết kế và lập trình Website PHP, Laravel chuyên nghiệp - FullStack
  • Lập trình ứng dụng trên nền tảng android
  • Lập trình Ứng dụng với Công nghệ ASP.NET Core MVC, WebAPI, ReactJS - FullStack
  • Lập trình ứng dụng với WINDOWS FORM
  • Lập trình ứng dụng với JAVA (FORM)
  • Thiết kế và lập trình Ứng dụng với công nghệ Java (Java Framework springBoot, hibernate,...) - FullStack
  • Thiết kế và lập trình website với công nghệ HTML5, CSS3, Javascript, Bootstrapt 4, Jquery
  • Lập trình frontend với reacjs (Full)
Viện Công Nghệ Và Đào Tạo Devmaster

VIỆN CÔNG NGHỆ VÀ ĐÀO TẠO DEVMASTER - Học thực tế * Làm thực tế * Cam kết việc làm
Copyright by Ⓒ DEVMASTER 2015