Quay lại danh sách
Sử dụng proxy để đo thời gian tải trang từ nhiều quốc gia và tối ưu CDN

Sử dụng proxy để đo thời gian tải trang từ nhiều quốc gia và tối ưu CDN

3 tháng 8, 2026

Tại sao cần đo thời gian tải trang từ nhiều quốc gia

Trong thời đại toàn cầu hóa, người dùng truy cập website từ khắp nơi trên thế giới. Thời gian tải trang không chỉ phụ thuộc vào mã nguồn mà còn vào khoảng cách vật lý, chất lượng kết nối và vị trí máy chủ CDN. Nếu chỉ đo từ một vị trí, bạn có thể bỏ qua các khu vực trễ hoặc bị chặn do chính sách địa lý. Việc đo lường từ nhiều quốc gia giúp bạn:

  • Xác định các điểm yếu của mạng lưới phân phối nội dung
  • Phát hiện sự chênh lệch về hiệu suất giữa các khu vực
  • Quyết định đầu tư vào các node CDN mới hoặc thay đổi cấu hình cache
  • Đảm bảo trải nghiệm người dùng đồng đều bất kể họ ở đâu

Thử thách khi thực hiện đo lường đa quốc gia

Khi thay đổi vị trí truy cập, bạn thường gặp phải:

  • Chặn IP: Một số dịch vụ giới hạn truy cập từ địa chỉ IP cụ thể hoặc từ các vùng được coi là có lưu lượngBot.
  • Giới hạn tốc độ: Các máy chủ có thể áp dụng giới hạn request mỗi phút cho một IP.
  • Yêu cầu xác thực: Một số trang web yêu cầu cookie hoặc session liên quan đến địa điểm.
  • CAPTCHA: Khi hệ thống phát hiện truy cập bất thường, chúng thách thức người dùng bằng CAPTCHA.

Để vượt qua những thách thức này, bạn cần một hệ thống proxy xoay cung cấp địa chỉ IP đa dạng, có thể thay đổi mỗi request hoặc mỗi session, và hỗ trợ xác thực nếu cần.

Lựa chọn proxy phù hợp

Proxy xoay residential là lựa chọn tốt nhất vì:

  • Địa chỉ IP thuộc về mạng ISP thực tế, khiến truy cập trông giống như người dùng thường.
  • Khả năng thay đổi IP nhanh giúp tránh bị chặn do quá nhiều request từ cùng một IP.
  • Có thể chọn IP theo quốc gia, thành phố甚至 là nhà cung cấp Internet cụ thể.

Một dịch vụ chất lượng như RoProxy cung cấp kho IP residential trên hơn 100 quốc gia, hỗ trợ xác thực username/password và cho phép cấu hình sticky session khi cần giữ cùng một IP trong một khoảng thời gian.

Công cụ đo lường hiệu suất

Có nhiều công cụ hỗ trợ đo thời gian tải trang và cung cấp chỉ số như TTFB, First Contentful Paint (FCP), Largest Contentful Paint (LCP). Đối với việc tự động hoá và tích hợp với proxy, ta thường dùng:

  • Puppeteer hoặc Playwright để điều khiển trình duyệt headless.
  • Sitespeed.io – một framework mã nguồn mở chuyên về đo lường hiệu suất web.
  • Lighthouse CI – có thể chạy trong môi trường Node và xuất ra JSON.

Trong hướng dẫn này, chúng ta sẽ sử dụng Puppeteer vì nó dễ dàng cấu hình proxy và cho phép tùy biến chỉ số đo lường.

Cấu hình Puppeteer để dùng proxy xoay

Dưới đây là ví dụ code Node.js sử dụng Puppeteer để truy cập một URL qua proxy residential với xác thực. Lưu ý rằng tất cả chuỗi đều dùng dấu nháy đơn để tránh xung đột với JSON.

const puppeteer = require('puppeteer');

async function testPage(url, proxyHost, proxyPort, proxyUser, proxyPass) {
  const browser = await puppeteer.launch({
    args: [
      `--proxy-server=${proxyHost}:${proxyPort}`,
      '--no-sandbox',
      '--disable-setuid-sandbox'
    ]
  });
  const page = await browser.newPage();
  await page.authenticate({username: proxyUser, password: proxyPass});
  await page.goto(url, {waitUntil: 'networkidle2'});
  const metrics = await page.evaluate(() => {
    const perf = window.performance.timing;
    return {
      ttfb: perf.responseStart - perf.requestStart,
      fcp: perf.fetchStart,
      lcp: perf.loadEventEnd - perf.navigationStart
    };
  });
  await browser.close();
  return metrics;
}

module.exports = { testPage };

Giải thích các bước

  1. Khởi tạo trình duyệt với tham số --proxy-server trỏ tới host và port của proxy.
  2. Xác thực nếu proxy yêu cầu username/password bằng page.authenticate.
  3. Đi tới trang và chờ cho tới sự kiện networkidle2 để đảm bảo tất cả tài nguyên đã tải.
  4. Thu thập chỉ số bằng cách truy cập window.performance.timing trong bối cảnh nội trang.
  5. Đóng trình duyệt và trả về kết quả.

Xoay proxy theo quốc gia

Để đo lường từ nhiều quốc gia, bạn cần danh sách proxy được phân loại theo quốc gia. RoProxy cung cấp API để lấy danh sách IP theo lọc quốc gia. Dưới đây là cách lấy proxy và luân phiên qua từng quốc gia.

const fetch = require('node-fetch');

async function getProxiesByCountry(countryCode) {
  const resp = await fetch(`https://api.roproxy.com/v1/proxies?country=${countryCode}&type=residential&format=json`);
  const data = await resp.json();
  // Giả sử API trả về mảng đối tượng { host, port, username, password }
  return data.proxies;
}

async function runMultiCountryTest(url, countryCodes) {
  const results = {};
  for (const code of countryCodes) {
    const proxyList = await getProxiesByCountry(code);
    // Chọn ngẫu nhiên một proxy từ danh sách
    const proxy = proxyList[Math.floor(Math.random() * proxyList.length)];
    const metrics = await testPage(url, proxy.host, proxy.port, proxy.username, proxy.password);
    results[code] = metrics;
  }
  return results;
}

// Ví dụ sử dụng
runMultiCountryTest('https://example.com', ['US', 'DE', 'JP', 'BR', 'AU'])
  .then(console.log)
  .catch(console.error);

Trong ví dụ trên, mỗi quốc gia chỉ sử dụng một proxy ngẫu nhiên. Để có kết quả ổn định hơn, bạn có thể lặp lại test nhiều lần với các proxy khác nhau và lấy trung bình.

Xử lý các tình huống đặc biệt

Giới hạn tốc độ và CAPTCHA

Nếu bạn gặp lỗi 429 hoặc trang CAPTCHA, hãy cân nhắc:

  • Tăng thời gian delay giữa các request (ví dụ 2–5 giây).
  • Sử dụng sticky session để giữ cùng một IP trong một khoảng thời gian dài, giảm khả năng kích hoạt cơ chế chặn.
  • Tận dụng pool IP lớn để tự động chuyển sang IP mới khi phát hiện chặn.

Kéo dài session

Một số trang web sử dụng cookie hoặc localStorage để theo dõi người dùng. Để giữ trạng thái khi đổi IP, bạn có thể lưu trữ cookie sau mỗi lần truy cập và nạp lại khi chuyển sang proxy mới (nếu cần). Puppeteer cho phép page.cookies()page.setCookie(...).

Thu thập và phân tích dữ liệu

Sau khi thu thập được chỉ số từ các quốc gia, bạn có thể lưu chúng vào file CSV để phân tích tiếp.

const fs = require('fs');
const path = require('path');

function writeCSV(results, filePath) {
  const lines = ['country,ttfb_ms,fcp_ms,lcp_ms'];
  for (const [country, m] of Object.entries(results)) {
    lines.push(`${country},${m.ttfb},${m.fcp},${m.lcp}`);
  }
  fs.writeFileSync(filePath, lines.join('\n'));
}

// Sau khi chạy test
writeCSV(results, path.join(__dirname, 'results.csv'));

Mở file CSV trong Excel hoặc Google Sheets để vẽ biểu đồ so sánh TTFB, FCP, LCP giữa các quốc gia. Những quốc gia có chỉ số cao hơn thể hiện khoảng cách tới server CDN lớn hoặc node edge chưa được tối ưu.

Quy trình tối ưu hoá CDN dựa trên kết quả đo lường

  1. Xác định node yếu: Quốc gia có thời gian tải cao nhất là nơi cần cải thiện.
  2. Kiểm tra cấu hình cache: Đảm bảo rằng các tài nguyên tĩnh (CSS, JS, hình ảnh) được lưu tại edge node gần nhất.
  3. Thay đổi TTL: Tăng thời gian sống của cache cho các tài nguyên ít thay đổi để giảm tải về nguồn.
  4. Thêm điểm presenza: Nếu một khu vực liên tục chậm, cân nhắc mua thêm gói CDN hoặc đàm phán với provider để đặt node mới.
  5. Theo dõi liên tục: Lập lịch chạy script đo lường hàng tuần hoặc hàng tháng để phát hiện kịp thời bất thường.

Lưu ý về pháp lý và道德

  • Chỉ đo lường trên các trang web mà bạn có quyền truy cập hoặc đã được phép.
  • Tránh gửi quá nhiều request trong thời gian ngắn để không gây quá tải cho máy chủ đích.
  • Tuân thủ các quy định về bảo vệ dữ liệu cá nhân nếu trang web thu thập thông tin từ người dùng.

Kết luận

Việc sử dụng proxy xoay để đo thời gian tải trang từ nhiều quốc gia là cách hiệu quả để phát hiện vấn đề về hiệu suất toàn cầu và đưa ra quyết định tối ưu hoá CDN có căn cứ. Bằng cách kết hợp Puppeteer (hoặc công cụ tương tự) với dịch vụ proxy chất lượng như RoProxy, bạn có thể tự động hoá quá trình thu thập dữ liệu, xử lý các chặn IP và CAPTCHA một cách linh hoạt, và cuối cùng cung cấp trải nghiệm người dùng tốt hơn trên toàn thế giới.

Bắt đầu ngay hôm nay bằng việc lấy danh sách proxy residential từ RoProxy, viết script test đơn giản như trên và quan sát sự khác biệt về tốc độ giữa các khu vực. Những insight mà bạn thu được sẽ giúp bạn cải thiện cấu hình mạng, giảm tỷ lệ thoát và nâng cao mức độ hài lòng của khách hàng.