Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

Trong quá trình học Node.js, khi mở nhiều trình duyệt cùng lúc với Puppeteer có thể làm máy tính của bạn bị lag, đặc biệt nếu bạn không quản lý tài nguyên một cách hiệu quả. Puppeteer khởi chạy một phiên bản Chromium cho mỗi trình duyệt, và việc này tiêu tốn nhiều tài nguyên hệ thống (CPU, RAM). Dưới đây là một số cách để giảm thiểu tình trạng này:

1. Chạy Node js Puppeteer trong chế độ headless

Chạy Puppeteer trong chế độ headless (không giao diện người dùng) sẽ giảm thiểu việc tiêu tốn tài nguyên hệ thống.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  // Thực hiện các thao tác khác...
  await browser.close();
})();

2. Giới hạn số lượng trình duyệt mở cùng lúc trong ứng dụng node.js

Sử dụng hàng đợi (queue) để giới hạn số lượng phiên trình duyệt mở cùng lúc. Ví dụ, bạn có thể sử dụng thư viện như async để quản lý hàng đợi.

const async = require('async');
const puppeteer = require('puppeteer');

const urls = ['https://example.com', 'https://example2.com', 'https://example3.com']; // Danh sách URL để xử lý
const MAX_CONCURRENT_BROWSERS = 5;

const processUrl = async (url) => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto(url);
  // Thực hiện các thao tác khác...
  await browser.close();
};

const queue = async.queue(async (url, callback) => {
  try {
    await processUrl(url);
    callback();
  } catch (error) {
    console.error(error);
    callback(error);
  }
}, MAX_CONCURRENT_BROWSERS);

urls.forEach(url => queue.push(url));

3. Sử dụng một phiên trình duyệt duy nhất với nhiều tab

Thay vì mở nhiều phiên trình duyệt, bạn có thể mở nhiều tab trong một phiên trình duyệt duy nhất.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const urls = ['https://example.com', 'https://example2.com', 'https://example3.com'];

  const pages = await Promise.all(urls.map(async (url) => {
    const page = await browser.newPage();
    await page.goto(url);
    return page;
  }));

  // Thực hiện các thao tác khác...

  await browser.close();
})();

4. Giới hạn tài nguyên của phiên trình duyệt

Bạn có thể giảm thiểu tài nguyên sử dụng bằng cách tắt các tính năng không cần thiết.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: true,
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage',
      '--disable-accelerated-2d-canvas',
      '--disable-gpu'
    ]
  });

  const page = await browser.newPage();
  await page.goto('https://example.com');
  // Thực hiện các thao tác khác...
  await browser.close();
})();

5. Giải phóng tài nguyên đúng cách

Đảm bảo rằng bạn đóng các phiên trình duyệt và tab sau khi hoàn thành để giải phóng tài nguyên hệ thống.

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://example.com');
  // Thực hiện các thao tác khác...
  await page.close(); // Đóng tab
  await browser.close(); // Đóng trình duyệt
})();

Tổng kết

Bằng cách tối ưu hóa cách bạn khởi chạy và quản lý các phiên trình duyệt, bạn có thể giảm thiểu tình trạng lag máy khi Node.Js sử dụng Puppeteer. Hãy áp dụng các phương pháp trên để quản lý tài nguyên hệ thống hiệu quả hơn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *