Điều gì gây ra thời gian 'chờ' trước khi tải HTML của tôi?


11

Tôi có một trang web dường như tải rất chậm. Khi tôi chạy thử nghiệm tốc độ trên đó, tôi thấy dường như có khoảng cách 6 giây trước khi tải HTML. Hình ảnh và tập lệnh JS tải rất nhanh sau thời điểm đó.

Bạn có thể thấy trong ảnh bên dưới các thanh 'thời gian chờ' màu vàng:

Tải tệp HTML mất hơn 5 giây, trong khi hầu hết các tài sản khác tải dưới 1 giây

Điều này dường như là nhất quán cho dù nội dung HTML trên trang là gì.

Trang web này đang sử dụng CMS (ModX Revo) để HTML thực sự được lưu trữ trong cơ sở dữ liệu SQL và được đưa ra bởi PHP, nhưng tôi chưa bao giờ gặp phải vấn đề này trước đây.

Có ai biết điều gì gây ra điều này và làm thế nào tôi có thể tăng tốc nó không?


Đây có phải là một điều mới? Đó là, các trang này đã hoạt động bình thường trước đây và bây giờ hoạt động kém? Hoặc đây là một cài đặt / trang web mới hơn? Bạn có thể cho chúng tôi biết thêm?
Closnoc

1
Trừ khi có một số mạng trung gian giữ điều này, thì đây dường như là thời gian máy chủ của bạn đang thực hiện để tạo phản hồi? Bạn nói "bất kể nội dung HTML là gì" - Nội dung HTML thông qua CMS của bạn, hay nghĩa đen là trang HTML tĩnh? Tôi chắc chắn sẽ thử một trang HTML tĩnh "Hello World" đơn giản nếu bạn chưa có. Cũng lưu ý rằng các máy chủ của pingdom ở bên kia thế giới đến Úc (mà tôi cho là nơi bạn được lưu trữ)?
MrWhite

1
IMO vấn đề chủ yếu là với một trang đó - máy chủ / CMS của bạn dường như mất nhiều thời gian để tạo phản hồi. Truy vấn SQL không hiệu quả ?? Các trang khác trên trang web của bạn dường như tương đối nhanh chóng. (?)
MrWhite

Câu trả lời:


13

Thuật ngữ chờ đợi được coi là thời gian của byte đầu tiên và xác định khả năng đáp ứng của máy chủ web hoặc các tài nguyên mạng khác.

Một số lý do phổ biến bạn có thể thấy thời gian cao đối với byte đầu tiên:

  • Mạng quá tải (lưu trữ chia sẻ thông thường)
  • Máy chủ cấu hình sai
  • Khoảng cách từ bạn và máy chủ (vị trí địa lý đóng vai trò thứ yếu)
  • Lỗi máy chủ (bước nhảy)

Nói chung, vấn đề này thường được thấy trong lưu trữ chia sẻ vì số lượng trang web và những người truy cập chúng rất lớn, điều này tất nhiên làm tăng thời gian byte mạng. Một nguyên nhân khác có thể là do lỗi trên mạng ở đâu đó, như hop hoặc do máy chủ của bạn không nằm trong vị trí của đối tượng được nhắm mục tiêu của bạn, ví dụ: máy chủ 'TỐT' của Vương quốc Anh sẽ có thời gian byte thấp hơn so với máy chủ Hoa Kỳ nhắm mục tiêu người dùng vào Vương quốc Anh, do khoảng cách mà dữ liệu cần phải được gửi và nhận (Thông thường tăng khoảng 100-200ms).

Có lẽ một thời gian để có được một máy chủ mới

Trước đây tôi phải chuyển từ máy chủ này sang máy chủ khác do thời gian trễ đến byte đầu tiên, bạn có thể phải chọn một máy chủ web mới hoặc nâng cấp gói hiện tại của mình.

Kiểm tra đáng tin cậy

Kiểm tra tốc độ trang web của bạn từ băng thông rộng tại nhà của bạn là rất sai lệch bởi vì nó có thể là một vấn đề với băng thông rộng của bạn không đáp ứng với trang web. Bạn nên kiểm tra trang web của mình bằng nhiều kết nối từ nhiều máy chủ ... Tôi khuyên bạn nên kiểm tra trang web và chạy nhiều thử nghiệm cùng một lúc từ các vị trí khác nhau và nhiều đối tượng trong đối tượng địa lý được nhắm mục tiêu. Điều này sẽ cung cấp cho bạn một cái nhìn tổng quan hơn về những gì đang diễn ra, nếu byte đầu tiên của nó thì tôi khuyên bạn nên liên hệ với máy chủ web của mình trước bất cứ điều gì khác.

Ping và theo dõi lộ trình máy chủ

Nếu bạn cố chạy ping trên máy chủ, kết quả có thể hiển thị hoặc không, ping sử dụng ICMP thay vì UDP hoặc TCP nghĩa là không giống như truy vấn máy chủ trên cổng 80 mà httpd của bạn sẽ chạy. Bạn có thể sử dụng tuyến theo dõi để xác định bất kỳ máy chủ nào trên tuyến có thể khiến byte đầu tiên tăng, một lần nữa ... nó không truy vấn máy chủ httpd trên cổng 80 và nếu theo dõi bằng Windows, nó sẽ sử dụng ICMP và Mac / Linux Máy sẽ sử dụng UDP. Thật đáng để thử nghiệm bởi vì đây là một việc nhanh chóng và dễ dàng để làm nhưng nếu kết quả tốt trở lại, không cần thiết có nghĩa là không có vấn đề ở đâu đó.


Xin chào @SunWKim Tôi đã cập nhật câu trả lời của mình với những gì bạn đã hỏi. Nhìn vào cuối câu trả lời của tôi.
Simon Hayter

Tôi đồng ý về lý do phổ biến của bạn về thời gian để byte đầu tiên. Trong trường hợp này, tuy nhiên; Tôi tin rằng nó có liên quan nhiều hơn với mã JavaScript.
CN

Byte đầu tiên có thể được gây ra bởi một loạt các thứ nhưng JavaScript không phải là một trong số đó vì phản hồi tiêu đề nằm trước các yếu tố nội tuyến như JavaScript, CSS, Hình ảnh, v.v. Đừng nhầm lẫn byte đầu tiên với các phần tử và tệp thực tế ..
Simon Hayter

Tôi không nhầm lẫn hai. Có thể nếu bạn đã truy cập mbff.com.au và tự mình nhìn thấy, bạn có thể tin chắc rằng đó không phải là vấn đề thời gian đối với byte đầu tiên. Sự chậm trễ xảy ra sau phản ứng tiêu đề đầu tiên.
CN

1
The delay is occurring after the first header responsethì đó không phải là byte đầu tiên. Byte đầu tiên là phản ứng đầu tiên.
Simon Hayter

4

1) Bạn có Adobe TypeKit không tải không đồng bộ với mã hiện tại. Hãy thử thay thế nó bằng mã không đồng bộ nâng cao: http://help.typekit.com/customer/portal/articles/649336-embed-code

Mã nhúng tiêu chuẩn này lợi dụng thực tế là các thẻ chặn hiển thị trang tiếp theo để giúp ngăn chặn FOUT [Flash của văn bản chưa được chỉnh sửa]. Trong khi tập lệnh Typekit đang tải, kết xuất trang bị chặn, vì vậy văn bản sẽ không bắt đầu hiển thị với phông chữ dự phòng.

2) Thử nghiệm với TypeKit mới. Làm thế nào là thời gian tải bây giờ? Tốt hơn? Chuyển đến bước 3.

3) Thay thế Google Analytics của bạn bằng JavaScript được cập nhật cung cấp cú pháp không đồng bộ mới nhất: https://developers.google.com/analytics/devguides/collection/gajs/

4) Kiểm tra. Là trang tải vẫn tốt hơn?

5) Cuối cùng, hãy xem xét tối ưu hóa hình ảnh, chẳng hạn như mẫu.jpg. Tôi đã chuyển đổi nó thành PNG và có thể giảm kích thước tệp từ 199kB xuống 56kB. Điều này giúp giảm thời gian nhận tệp: https://www.dropbox.com/s/i06jx509bmprhhh/potype.png?dl=0

Tôi hi vọng cái này giúp được.


3

Các yếu tố PHP và không phải PHP

Nếu bạn so sánh thời gian tải tài sản không phải PHP của bạn với thời gian tải dựa trên PHP của bạn, bạn sẽ thấy rằng máy chủ phản hồi nhanh nếu PHP không liên quan.

Điều này thường chỉ ra một vấn đề nội bộ đối với tập lệnh PHP của bạn.

Vấn đề có thể nằm trong lớp PHP hoặc cơ sở dữ liệu. Sử dụng các công cụ sửa lỗi nâng cao như XDebug hoặc NewRelic có thể giúp bạn nhanh chóng phát hiện ra nút cổ chai.

Thời gian để các vấn đề byte đầu tiên có thể được gây ra bởi các ràng buộc phần cứng, cấu hình kém hoặc mã không hiệu quả. Trên lưu trữ chia sẻ, các hạn chế phần cứng và cấu hình kém rất có thể.

Trong mọi trường hợp, giải quyết vấn đề thường có nghĩa là một hoặc tất cả:

  • Thêm phần cứng
  • Lập trình tốt hơn
  • Thêm bộ nhớ đệm

Phần cứng nhanh hơn là một giải pháp rõ ràng nhưng thường tốn kém nếu bạn đã sử dụng các tài nguyên chuyên dụng.

Lập trình tốt hơn có thể không thể thực hiện được nếu vấn đề nằm ở mã bạn không duy trì hoặc thiếu tài nguyên dành cho nhà phát triển.

Bộ nhớ đệm giúp bằng cách giảm số lượng yêu cầu phải đánh vào các tài nguyên cơ bản, hoạt động kém.

Kiểm tra

Khi sử dụng các công cụ kiểm tra hãy chắc chắn để thực hiện nhiều lần chạy. Mạng và máy chủ tạm thời tăng đột biến có thể dễ dàng dẫn bạn xuống con đường sai, vì vậy bạn muốn cố gắng trung bình những điều này.

Lưu trữ

Nếu bạn đang sử dụng tài khoản lưu trữ được chia sẻ, thì hãy xem xét chuyển sang dịch vụ đám mây hoặc loại VPS để bạn hiểu rõ hơn về các vấn đề về hiệu suất. Trừ khi bạn sử dụng kỹ thuật lưu trữ (dịch vụ loại CDN hoặc Cloudflare), việc khắc phục các sự cố về hiệu suất trên các hệ thống lưu trữ được chia sẻ hàng loạt có thể rất khó khăn vì bạn không có đủ quyền kiểm soát máy chủ.


-1

Hãy thử đặt cookie của bên thứ ba để chỉ truy cập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.