Categories DNS

Tối thiểu hóa thời gian tra cứu DNS

tối thiểu hóa thời gian tra cứu DNS

Tra cứu DNS là gì?

  • DNS là viết tắt của cụm từ “Domain Name System/Hệ thống Phân giải Tên miền”;
  • Một tên miền như “ten-mien-cua-ban.com” phải được kết nối với một địa chỉ IP nào đó;
  • Tra cứu DNS (DNS lookup) là một yêu cầu được gửi tới máy chủ khác để có được câu trả lời về địa chỉ IP cho một tên miền cụ thể
tra cứu DNS

Với bất kỳ tài nguyên nào bạn muốn tải cho trang, trình duyệt sẽ phải “tìm kiếm nó”. Trình duyệt cần làm điều đó ít nhất một lần cho mỗi tên miền mà trang web của bạn chứa tài nguyên.

Các trang web ngày càng đa dạng tính năng, và nó thường sử dụng nhiều tra cứu DNS – cái khiến cho việc render / hiển thị trang bị chậm đi nhiều.

Quá trình này có thể làm chậm trang web của bạn đáng kể, và một trong những quyết định mà bạn cần thực hiện để cải thiện tốc độ trang web là đánh giá xem hiện trang của bạn có đang có quá nhiều tra cứu DNS hay không.

tra cứu DNS quá nhiều khiến tốn thời gian render

Trang web nhỏ đáng lẽ có thể chỉ cần tải trong một giây, có khi phải mất nhiều giây để tải về, chỉ bởi nó tốn thời gian tra cứu DNS. Nếu bạn có trải nghiệm chậm về tốc độ tải trang, hãy thử kiểm tra có bao nhiêu tìm kiếm/tra cứu DNS trên trang của bạn và quyết định xem có nên tiếp tục sử dụng nó hay không. Thời gian tốn thêm làm chậm việc tải trang do các nguồn của bên thứ ba được biết đến với tên gọi: độ trễ do tra cứu DNS (DNS lookup time).

Một ví dụ về điều này có thể là nút mạng xã hội (facebook / twitter / google +) những nút mạng xã hội này có khả năng yêu cầu nhiều hơn một nguồn – cái mà nhiều khi bạn không tính trước được là sẽ như vậy. Nhiều tính năng hiện đại trên trang yêu cầu tài nguyên rất nặng, và phải gọi các tên miền khác nhau cho công việc đó. Một ví dụ khác là Google webfonts, nó cần đến hai yêu cầu tra cứu DNS. (Xem thêm về việc sử dụng font trên web ảnh hưởng thế nào đến tốc độ ở đây).

Một quyết định không tồi là cần biết xem hiện trang của bạn đang yêu cầu những gì, qua đó bạn có khả năng tạo được trang tải nhanh chóng hơn cho người dùng. Công cụ mà tôi muốn chia sẻ là đây: Pingdom, nó sẽ giúp bạn biết được có bao nhiêu yêu cầu mà trang của bạn tạo ra.


Biết được trang của bạn đang làm gì. Quyết định xem điều gì là quan trọng cho trang của bạn?

Liệu webfont này có đáng để bạn bỏ ra 1 đến 2 giây tải về không? Đôi khi nó đáng, nhưng đôi khi nó cũng không cần thiết phải vậy. Liệu nút chia sẻ mạng xã hội quan trọng hơn tốc độ trang? Điều đó còn tùy vào từng trang web.

Tạo ra sự cân bằng tốt giữa tốc độ tải trang web và tra cứu DNS chủ yếu là vấn đề quyết định xem điều gì là quan trọng với trang web của bạn.


Làm thế nào để biết được tra cứu DNS xảy ra trên trang của tôi như thế nào?

Bước đầu tiên cần phải biết là nắm rõ trang của bạn đang yêu cầu những gì (các nguồn tài nguyên nào nó cần để tải trang). Công cụ Pingdom vừa nói ở trên sẽ giúp bạn xem có bao nhiêu yêu cầu mà trang cần tải. Từng tên miền khác nhau dùng để tải về tài nguyên sẽ yêu cầu ít nhất là một lần tra cứu DNS.

Ví dụ: Nếu bạn sử dụng JavaScript từ Twitter cho nút bấm Twitter, thế thì tra cứu DNS sẽ cần phải có cho tên miền twitter.com và nếu bạn cũng sử dụng cả Facebook nữa, thế thì sẽ có thêm một tên miền, và tương ứng là một lần tra cứu DNS tăng thêm.

Bạn hãy vào trang webpagetest.org và kiểm tra trang của bạn ở đó. Nó sẽ cho thấy có bao nhiêu yêu cầu mà trang của bạn tạo ra. Hãy xem cẩn thận kết quả và đếm số lần tra cứu DNS.


Làm thế nào cải thiện được thời gian tra cứu DNS để nó nhanh hơn

Tốc độ có thể được cải thiện bằng cách loại bỏ hoặc trì hoãn lời gọi DNS.

Thậm chỉ nếu bạn không thể loại bỏ những thứ trên trang mà đang thực hiện các lời gọi DNS, bạn vẫn có thể cần cải thiện tốc độ của trang bằng cách không tải chúng ngay lập tức.

Điều này thường được thực hiện bằng cách trì hoàn tải JavaScript, JS thường không cần thiết cho nội dung nằm trong màn hình đầu tiên.

Để biết cách ưu tiên tải nội dung trong màn hình đầu tiên trước, hãy tìm hiểu tuyến hiển thị quan trọng (critical rendering path). Chúc bạn sớm có tốc độ website lướt nhanh như Speed.Family!

P/S (của người dịch):

  • Bạn có thể dùng dns-prefetch hoặc preconnect để tối thiểu hóa thời gian tra cứu DNS của nhiều tài nguyên bên ngoài. Nó giảm thời gian bằng cách thực hiện các tra cứu DNS song song nhau.
  • Một mẹo nữa để tăng tốc độ phân giải tên miền là sử dụng DNS có tốc độ cao. Điều này hiện chỉ áp dụng riêng cho tên miền của bạn mà thôi, không sử dụng được cho bên thứ ba. Theo thống kê hiện tại thì DNS của Cloudflare đang có tốc độ phân giải cao nhất thế giới, và nhiều tên miền của tôi đang dùng dịch vụ miễn phí ở đây. Chú ý là bạn chỉ dùng DNS của họ, trong phần lớn trường hợp không cần dùng CDN miễn phí của CloudFlare, nhất là với các website quan trọng. Riêng gói Pro (trả phí) của họ thì khá ổn. Bạn có thể cân nhắc dùng.

(Dịch từ bài viết: Minimize DNS lookups – Tác giả: Patrick Sexton – Website: Varvy)

Back to Top