Giảm thời lượng DNS lookup để cải thiện tốc độ website

  • Home / DNS / Giảm thời lượng…
Auto Draft

Giảm thời lượng DNS lookup để cải thiện tốc độ website

DNS là yếu tố thường bị các quản trị viên website bỏ qua. Tuy nhiên, nếu được tối ưu tốt, nó có thể đóng góp lớn vào tốc độ trang web và hiệu suất tổng thể. Vì vậy, hôm nay chúng tôi sẽ nói với bạn về cách giảm DNS lookup để bạn biết cách tận dụng, mang lại lợi ích cho trang web hơn.

DNS Lookup là gì?

DNS là xương sống của internet, nó là một hệ thống bản đồ để đánh dấu IP website và tên miền của nó.

Mỗi tên miền được ghi lại thông tin trỏ đến một địa chỉ IP. Ví dụ, khi bạn nhập google.com vào thanh địa chỉ của trình duyệt, ISP của bạn sẽ yêu cầu tên của máy chủ được liên kết với tên miền đó. Nếu không có DNS, bạn sẽ phải nhập 216.58.212.110 để truy cập trang web.

Quá trình dịch tên miền thành IP này phụ thuộc vào kết quả của DNS lookup.

Vì vậy, trước khi bạn có thể xem và tải xuống tất cả dữ liệu của website bằng trình duyệt của mình, DNS Lookup phải được thực hiện trước.

Tất nhiên, việc lookup không phải lúc nào cũng được tiến hành mỗi lần truy vấn. Ví dụ, khi bạn thực hiện truy cập các địa chỉ sau bằng trình duyệt theo giao thức HTTP:

  • http://hostinger-dev-2.xyz
  • http://hostinger-dev-2.xyz/wp-content/themes/veggie-lite/style.css
  • http://hostinger-dev-2.xyz/wp-content/plugins/mailchimp-for-wp/assets/js/forms-api.min.js
  • http://platform.linkedin.com/in.js
  • http://platform.twitter.com/widgets.js

Mặc dù trong ví dụ bạn đã thực hiện 5 yêu cầu nhưng chỉ có 3 tên miền duy nhất trong tổng số. Nên trình duyệt của bạn chỉ thực hiện 3 lần DNS lookup:

  • http://hostinger-dev-2.xyz
  • http://platform.linkedin.com
  • http://platform.twitter.com

Nói chung, khi bạn truy cập trang web, trình duyệt sẽ yêu cầu tất cả các tài nguyên với DNS lookup. Và nó phải đợi cho đến khi tất cả quy trình DNS lookup hoàn tất thì trình duyệt mới tải file.

Có thể mất thời gian, đặc biệt là trên trang sử dụng nhiều DNS lookup. Và chuyện này cuối cùng có thể khiến thời gian tải website tổng thể cao.

Website chậm có sao không?

Nếu bạn có một trang web tải nhanh không chỉ tăng trải nghiệm cho khách truy cập được tốt hơn mà còn có thể ảnh hưởng đến xếp hạng SEO của bạn.

Thời gian tải trang đóng vai trò quan trọng trong việc giữ chân khách truy cập trang web và giảm tỷ lệ thoát. Điều đó bởi vì 53% người dùng sẽ từ bỏ trang web nếu tải lâu hơn 3 giây.

Theo một nghiên cứu của Google, khoảng 45% khách truy cập được báo cáo sẽ không bao giờ truy cập lại cùng một trang web nếu họ có trải nghiệm xấu. Và thời gian tải trang web đóng góp đáng kể như một trong những yếu tố tiêu cực.

Google cũng sử dụng tốc độ tải trang làm yếu tố xếp hạng. Tốc độ tải trang chậm hơn có thể tác động hơn nữa đến crawler và index web. Đó là lý do tại sao sở hữu trang web tải trang nhanh cực kì quan trọng đối với quản trị viên web để đạt được thành công trên internet.

Để tìm hiểu website của bạn có gặp vấn đề gì với DNS lookup, bạn có thể kiểm tra bằng cách dùng web page test. Dưới đây là ví dụ mà chúng tôi đã lấy với The Longreads.

web page test longreads

Giảm DNS lookup dễ dàng

Bây giờ bạn hiểu chức năng của DNS lookup. Vậy hãy tiến hành giảm DNS lookup nếu như thời lượng DNS lookup của website bạn chậm

1. Sử dụng dịch vụ DNS nhanh

Giống như dịch vụ hosting, có rất nhiều nhà cung cấp DNS đáng tin cậy ngoài kia. Sử dụng một DNS nhanh sẽ giảm đáng kể thời lượng DNS lookup. Các dịch vụ DNS phổ biến nhất là Cloudflare, WordPress.com, Edgecast, DNSMadeEasy, và DYN.

Các nhà cung cấp DNS hoạt động khá giống với CDN – họ có nhiều point-of-presence (POP) trên toàn cầu. Và các nhà cung cấp lớn, như Cloudflare, thường có cơ sở hạ tầng lớn để cung cấp DNS dựa trên vị trí với độ trễ thấp (low-latency).

Bạn cũng có thể kiểm tra nhà cung cấp DNS cho vị trí ưa thích của mình. Để bạn có thể có được tốc độ được tối ưu hóa tốt nhất, sử dụng các công cụ như DNSPerfDNS SPeed Test.

2. Tối ưu hóa DNS Caching

Nhờ DNS caching, bạn không phải lo về việc lookup sẽ diễn ra trên từng trang một. Cùng một tài nguyên sẽ không cần phải tải xuống quá 2 lần, nhờ vào tiến trình caching.

DNS Caching hoạt động khá giống với cache trên trang WordPress. Với phương pháp này, DNS được cung cấp từ cache cho đến khi hết hạn. Bạn cũng có thể đặt độ dài của DNS cache theo giá trị time-to-live (TTL).

Bạn có thể thay đổi giá trị TTL của mình với nhà đăng ký tên miền hoặc nhà cung cấp DNS của bên thứ ba để tăng thời gian hiệu lực của cache và kết quả là giảm được DNS lookup.

Nếu bạn sử dụng TINET.VN, bạn có thể làm vậy bằng cách sửa đổi giá trị từ DNS Zone Editor.

các dns record trong dns zone

Dưới đây là các giá trị TTL phổ biến nhất:

  • 1800 giây = 30 phút
  • 3600 giây = 1 giờ
  • 14400 giây = 4 giờ
  • 43200 giây = 12 giờ
  • 86400 giây = 24 giờ

3. Tối ưu hóa DNS Prefetching

Một cách khác để giảm DNS lookup là giảm thiểu hoạt động trong background trong lúc khách truy cập đang duyệt trang web. Phương pháp này được gọi là DNS Prefetching.

Prefetching cho phép trình duyệt tìm nạp các tài sản cần thiết để hiển thị nội dung trang sau đó. Nó sẽ bắt đầu tải xuống các tài nguyên khác khi thời gian nhàn rỗi trôi qua và lưu trữ các tài nguyên này trong cache.

Và khi khách truy cập nhấp vào link cụ thể đã được prefetch, nó cho phép truyền dữ liệu nhanh hơn để có thể truy cập vào nội dung ngay lập tức.

Bạn có thể thêm DNS prefetch vào URL cụ thể bằng cách thêm thẻ rel= vào thuộc tính của link. Nếu bạn sử dụng WordPress, bạn có thể thêm dòng sau vào tiêu đề của trang web:

<!-- Prefetch DNS for external assets -->
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="dns-prefetch" href="//www.google-analytics.com"> 
<link rel="dns-prefetch" href="//www.keycdn.com">

Và quan trọng hơn, việc DNS prefetching cũng được hầu hết trình duyệt hiện đại hỗ trợ.

4. Kích hoạt Keep-Alive

Bạn cũng có thể giảm DNS lookup bằng cách bật Keep-Alive. Đây là kênh liên lạc luôn hoạt động giữa máy chủ và trình duyệt, giúp bạn tải nhiều file tài sản nhanh hơn rất nhiều.

Ví dụ: nếu bạn có asset tại n1.assetdomain.com và 5 tài nguyên tại n2.assetdomain.com, thì nó sẽ có tổng cộng là 6 yêu cầu DNS. Với Keep-Alive, các tài nguyên đó sẽ được tải dưới dạng 2 yêu cầu.

Đáng nói rằng việc truyền tải tích cực này chỉ dùng 1 tín hiệu nhỏ, do đó tiêu tốn rất ít băng thông. Bạn có thể kích hoạt chức năng này trên các máy chủ Apache và Nginx.

Apache

Để bật Keep-Alive trên máy chủ Apache, hãy thêm đoạn code sau vào file .htaccess:

<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

Nginx

Đối với các máy chủ Nginx, hãy tìm core module HTTP (ngx_http_core_module) và tìm kiếm dòng tương tự để giữ keep alive_disable. Và bạn có thể thay đổi nó như trong ví dụ dưới đây:

keepalive_disable none;

5. Thay thế CNAME bằng A Records

CNAME record tạo ra lookup bổ sung có thể khiến phân giải chậm trễ IP. Có một vài CNAME là bình thường. Tuy nhiên, nếu trang web của bạn có nhiều CNAME record, bạn có thể xem xét xóa chúng khỏi DNS record để giảm DNS lookup.

Thay vào đó, hãy dùng A record để thay thế. Nó chia sẻ chức năng tương tự như CNAME, nhưng ở cấp độ root và không thông qua domain chính nên quá trình phân giải IP nhanh hơn.

Ví dụ, nếu bạn có cấu hình cho www.domain.com, với CNAME, thường phải phân giải tên máy chủ trước rồi đến địa chỉ IP. Và điều này đòi hỏi 2 bộ yêu cầu khác nhau.

ANSWER SECTION:
www.domain.com. 3599 IN CNAME domain.com.
domain.com. 3599 IN A 40.71.11.131

A record giúp bạn bỏ qua các yêu cầu này và thay vào đó sẽ trả lời câu trả lời sau:

ANSWER SECTION
www.domain.com. 3599 IN A 40.71.11.131

Nếu bạn sử dụng Cloudflare, nó cũng cung cấp một tính năng gọi là CNAME Flattening có chức năng tương tự như A record.

6. Hoãn phân tích cú pháp JavaScript (Deferring JavaScript Parsing)

Phương pháp này cho phép bạn tải đầy đủ tất cả nội dung trang web trước khi tải JavaScript. Mặc dù nó thật ra nó không giảm thời gian phân giải DNS nhưng nó có tác dụng khiến cho khách truy cập sớm thấy website hơn. Điều này có thể tạo cảm giác website load nhanh hơn, mang lại trải nghiệm tốt hơn cho khách truy cập.

Trong WordPress, bạn có thể sử dụng plugin như Async JavaScript, để thực hiện công việc nặng nhọc này. Nhưng hãy nhớ rằng, bạn cũng sẽ phải liệt kê những script bạn không muốn trì hoãn.

Để giải thích chi tiết hơn, chúng tôi cũng đã đề cập đến cách hoãn JavaScript trong hướng dẫn này.

Lời kết

Bài viết đã khá dài rồi. Giờ hãy để chúng tôi tóm tắt nhanh về cách giảm DNS lookup:

  • Sử dụng Dịch vụ DNS nhanh – là một cách chắc chắn để DNS lookup tốt hơn, vì các nhà cung cấp sẽ chăm sóc các yếu tố thiết yếu.
  • Tối ưu hóa DNS Caching – là một cách tuyệt vời khác để lưu trữ DNS. Nó hoạt động khá giống như cache trên WordPress.
  • Tối ưu hóa DNS Prefetching – bạn cũng có thể tìm nạp DNS, cho phép bạn cung cấp phản hồi nhanh hơn. Tất cả các trình duyệt chính cũng hỗ trợ phương pháp này.
  • Kích hoạt Keep-Alive – cho phép bạn giữ liên lạc kênh đôi giữa trình duyệt và máy chủ. Nó cũng tiêu thụ rất ít băng thông.
  • Thay thế CNAME bằng A Records – bạn cũng có thể thay thế CNAME bằng A record hiệu quả hơn.
  • Hoãn phân tích cú pháp JavaScript – và cuối cùng, bạn có thể hoãn JavaScript để tải nó sau nội dung trang web.

Bạn có kinh nghiệm trong việc tối ưu hóa DNS lookup không? Hãy chia sẻ nó trong phần bình luận bên dưới nhé.

Write a Comment