Interactive · Website Performance

Vì sao website của bạn tải chậm?

Nhấn ▶ Chạy để xem từng bước một trang WordPress thật sự tải: từ DNS lookup tới khi người dùng bấm được nút đầu tiên. Bật Đã tối ưu để thấy chính xác bước nào nhanh hơn — và tại sao.

Chưa tối ưuĐã tối ưu
1 / 24
d-solutions.vn
Đã trôi qua120ms
Tổng tải (chưa tối ưu)6.1s
Chênh lệch tối ưu−5.1s (84%)
Kết nối mạngThông tin

DNS Lookup

120 msISP resolver, chưa cache

Trình duyệt hỏi DNS resolver: domain này trỏ về IP nào.

Fix ở đâu: DNS prefetch/preconnect + dùng resolver nhanh (Cloudflare 1.1.1.1).

5 đoạn cấu hình thật, copy về là chạy được — nhớ đổi placeholder (domain, host…) theo dự án của bạn.

1. Nginx — Cache-Control cho static assets

Trình duyệt (và CDN) giữ ảnh/CSS/JS lâu dài, khỏi tải lại ở lần ghé sau.

location ~* \.(css|js|jpg|jpeg|png|webp|svg|woff2?)$ {
    expires 30d;
    add_header Cache-Control "public, no-transform, immutable";
}

Đổi đường dẫn / danh sách đuôi file theo cấu trúc theme của bạn.

2. Nginx — Bật nén gzip/brotli

Giảm 60-80% dung lượng HTML/CSS/JS truyền qua mạng, TTFB nhanh hơn.

gzip on;
gzip_comp_level 5;
gzip_types text/plain text/css application/javascript application/json
           application/xml image/svg+xml;

# Nếu module Brotli đã cài:
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/javascript application/json;

Brotli cần module ngx_brotli — cài thêm nếu server chưa có.

3. wp-config.php — Redis object cache

DB query giảm từ hàng trăm xuống chỉ vài chục — chính là bước "DB Queries" trong mô phỏng.

// wp-config.php — cần plugin object-cache (vd: Redis Object Cache) đã cài
define( 'WP_REDIS_HOST', 'your-redis-host' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_CACHE_KEY_SALT', 'example.com:' );

your-redis-host là placeholder — trỏ về Redis instance thật của bạn.

4. HTML — defer JS + preload critical CSS/font

Bỏ chặn render: trang vẽ ra ngay, script chạy sau khi HTML đã parse xong.

<!-- Font/CSS quan trọng: mách trước cho trình duyệt -->
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="/assets/critical.css" as="style">

<!-- Script không cần chạy ngay: không chặn parser -->
<script src="/assets/app.js" defer></script>

Chỉ preload thứ thực sự dùng ở above-the-fold — preload thừa lại phản tác dụng.

5. Cloudflare — Cache Rule cho HTML

HTML được trả thẳng từ edge (CDN HIT) thay vì chạm origin mỗi request.

Rule name: Cache HTML for example.com
When incoming requests match:
  Hostname equals "example.com"
Then:
  Cache eligibility: Eligible for cache
  Edge TTL: 2 hours
  Browser TTL: 30 minutes

Cấu hình qua Cloudflare Dashboard → Caching → Cache Rules. Đổi domain theo dự án.

Load time không phải một con số — nó là một chuỗi 24 bước

Khi bạn gõ một URL và nhấn Enter, "thời gian tải trang" thực chất là tổng của rất nhiều bước nhỏ nối tiếp nhau: phân giải DNS, bắt tay TCP/TLS, server xử lý PHP và truy vấn database, rồi trình duyệt tải, parse và vẽ ra màn hình. Mỗi bước có thể nhanh hoặc chậm độc lập — và một bước chậm (ví dụ database chưa cache) có thể kéo dài toàn bộ chuỗi phía sau nó.

Công cụ này mô phỏng lại đúng chuỗi đó theo 2 kịch bản: một website WordPress điển hình chưa được tối ưu, và cùng website đó sau khi tối ưu đúng cách. Con số dùng trong mô phỏng dựa trên các case thực tế phổ biến — không phải dữ liệu real-time của website bạn (muốn đo thật, dùng PageSpeed Checker).

Những "điểm nghẽn" xuất hiện nhiều nhất

  • DB Queries không cache: mỗi request chạy lại hàng trăm truy vấn MySQL thay vì phục vụ từ object cache — thường là điểm nghẽn lớn nhất trên WordPress.
  • Render-blocking CSS/JS: file không có defer/preload buộc trình duyệt chờ tải xong mới được vẽ bất kỳ pixel nào.
  • LCP chưa tối ưu: ảnh hero nặng, chưa nén, hoặc bị lazy-load nhầm — kéo Largest Contentful Paint lên hàng giây.
  • CDN/object cache MISS: mọi request đều chạm thẳng origin server thay vì được phục vụ từ edge hoặc Redis.

Dùng kết quả này thế nào?

Mỗi stage-card đều có mục "Fix ở đâu" — trỏ thẳng tới lớp hạ tầng cần sửa (Nginx, wp-config.php, HTML head, hoặc Cloudflare). Phần Starter pack bên dưới gom sẵn 5 đoạn cấu hình thật tương ứng, copy về là áp dụng được ngay — chỉ cần đổi placeholder theo dự án của bạn.

Website của bạn đang ở kịch bản nào?

D-Solutions tối ưu tốc độ WordPress/WooCommerce: cache, database, CDN, Core Web Vitals — đo được, chứng minh được bằng số liệu thật.