Tối ưu tốc độ website WooCommerce: giỏ hàng, checkout, database

•
•
Khoảng 10 phút đọc

Tối ưu tốc độ website WooCommerce khác với tối ưu một website giới thiệu thông thường. Shop có trang phải xử lý riêng cho từng khách (giỏ hàng, thanh toán, tài khoản), nên cách làm nhanh quen thuộc là cache toàn trang chỉ giải quyết được một nửa vấn đề. Bài này đi qua 3 điểm nghẽn hay gặp nhất là giỏ hàng, checkout và database, kèm cách xử lý theo thứ tự nên làm. Cập nhật tháng 11/2026.

Vì sao website WooCommerce chậm hơn website thường?

Website WooCommerce chậm hơn vì phần lớn trang quan trọng của shop không cache được như bài viết. Trang sản phẩm và danh mục cache tốt, nhưng giỏ hàng, thanh toán và tài khoản phải được tạo mới theo từng khách, nên mỗi lượt xem đều bắt máy chủ chạy PHP và truy vấn database.

WooCommerce là plugin thương mại điện tử chạy trên WordPress, lưu sản phẩm, đơn hàng, phiên mua hàng và cấu hình trong cùng một cơ sở dữ liệu. Shop càng nhiều sản phẩm, nhiều biến thể, nhiều plugin thanh toán và vận chuyển thì mỗi lượt tải trang càng nặng. Điều này giải thích vì sao một shop nhỏ vẫn có thể chậm dù ảnh đã nén gọn: nút thắt nằm ở máy chủ và database, không nằm ở ảnh.

Trước khi sửa, hãy đo đúng chỗ. Nếu bạn chưa biết điểm nghẽn nằm đâu, đọc cách tìm điểm nghẽn khi website WordPress tải chậm và cách đọc PageSpeed Insights trước. Ngưỡng Google dùng cho trải nghiệm tốt là LCP không quá 2,5 giây, INP không quá 200 mili giây và CLS không quá 0,1, xem thêm tại web.dev.

Giỏ hàng chậm: cache sai cách và cart fragments

Giỏ hàng chậm thường do 2 nguyên nhân: plugin cache cache nhầm những trang không được cache, hoặc trang gọi liên tục một yêu cầu AJAX để cập nhật số lượng giỏ hàng. Sửa 2 điểm này thường giảm tải đáng kể cho máy chủ.

Loại đúng trang khỏi cache

Giỏ hàng, thanh toán và tài khoản phải nằm ngoài cache toàn trang. Nếu cache nhầm, khách có thể thấy giỏ hàng cũ hoặc giỏ hàng của người khác. Ngược lại, nếu loại trừ quá rộng (ví dụ loại cả trang chủ vì có icon giỏ hàng) thì cả shop mất cache và chậm đều. Các plugin cache uy tín như LiteSpeed Cache đã có sẵn quy tắc cho WooCommerce, bạn chỉ cần kiểm tra lại chúng đang bật và không bị plugin khác ghi đè.

Yêu cầu get_refreshed_fragments

Cart fragments là cơ chế WooCommerce dùng để cập nhật số lượng và tổng tiền ở icon giỏ hàng mà không tải lại trang. Nó gọi một yêu cầu AJAX tên wc-ajax=get_refreshed_fragments trên nhiều trang. Yêu cầu này bỏ qua cache, nên với shop đông khách, nó là một trong những nguồn tải đáng kể lên máy chủ.

Cách xử lý tuỳ giao diện. Nhiều theme có tuỳ chọn tắt fragments trên trang không cần thiết, hoặc chỉ tải khi khách đã có sản phẩm trong giỏ. Nếu theme không có tuỳ chọn, bạn có thể tắt script này ở các trang không có mini cart, nhưng cần thử kỹ vì tắt sai sẽ làm icon giỏ hàng không cập nhật. Đây là việc nên làm trên bản staging trước khi áp lên shop đang bán.

Checklist xử lý giỏ hàng chậm khi tối ưu tốc độ website WooCommerce
Bốn việc cần kiểm tra khi giỏ hàng WooCommerce chậm.

Checkout chậm: nơi mất đơn nhiều nhất

Trang checkout chậm là chỗ đáng sửa nhất vì khách đã quyết định mua, chỉ cần chờ lâu hoặc form giật là họ rời đi. Checkout vừa không cache được, vừa tải nhiều script bên thứ ba nhất trong toàn shop.

Các nguồn gây chậm thường gặp

  • Plugin cổng thanh toán, vận chuyển và tính phí ship gọi dịch vụ bên ngoài ngay khi trang tải.
  • Script quảng cáo và theo dõi (pixel, chat, remarketing) nạp ở trang thanh toán dù không cần.
  • Form có quá nhiều trường, mỗi lần khách đổi tỉnh thành lại gọi tính lại phí và tải lại cả khối đơn hàng.
  • Plugin cũ chưa tương thích phiên bản WooCommerce hiện tại, gây lỗi JavaScript và làm form đơ.

Cách làm gọn: mở trang checkout, xem tab Network để biết yêu cầu nào chậm nhất, rồi tắt từng plugin trên staging để tìm thủ phạm. Chỉ để trên trang này những script phục vụ thanh toán. Rút bớt trường không cần (ví dụ tên công ty, địa chỉ phụ) cũng giúp khách điền nhanh hơn, và với shop bán hàng vật lý thì thường vẫn đủ thông tin để giao.

Giỏ hàng và đồng hồ bấm giờ minh hoạ checkout WooCommerce
Checkout là nơi mỗi giây chờ đều có thể làm mất đơn.

Database WooCommerce phình to: dọn gì, dọn thế nào?

Database của shop phình to vì WooCommerce ghi liên tục: phiên mua hàng, đơn hàng, log, tác vụ nền. Nếu không dọn, các truy vấn ngày càng chậm, và trang quản trị là nơi lộ ra đầu tiên. Dưới đây là những chỗ hay phình nhất.

Bảng wp_options chứa cả cấu hình lẫn dữ liệu tạm. Những dòng đánh dấu autoload sẽ được tải lên ở mọi lượt xem trang. Plugin gỡ đi vẫn để lại dòng autoload, nên theo thời gian bảng này nặng dần và kéo chậm cả shop. Bảng phiên mua hàng của WooCommerce cũng tích tụ các phiên đã hết hạn. Action Scheduler, bộ lập lịch tác vụ nền của WooCommerce, có thể để lại hàng loạt bản ghi tác vụ đã hoàn thành hoặc thất bại nếu không được dọn.

Về cấu trúc, WooCommerce đã có tính năng lưu đơn hàng riêng (High-Performance Order Storage, gọi tắt HPOS) thay cho kiểu lưu chung với bài viết. Shop đơn hàng nhiều nên cân nhắc bật, nhưng cần kiểm tra các plugin đang dùng có tương thích, và phải sao lưu đầy đủ trước khi chuyển. Đừng bật trực tiếp trên shop đang bán khi chưa thử.

Object cache bằng Redis

Object cache là bộ nhớ đệm lưu kết quả các truy vấn database lặp lại, để lần sau không phải hỏi database nữa. Với WooCommerce, nó đặc biệt hữu ích vì các trang không cache được vẫn dùng chung rất nhiều dữ liệu (cấu hình, giá, tuỳ chọn). Redis là loại object cache phổ biến nhất, cần hosting hoặc VPS hỗ trợ. Trên website của chính HPB Media, chúng tôi dùng LiteSpeed Cache kết hợp Redis Object Cache để giảm tải truy vấn.

Khi nào không nên bật HPOS hoặc Redis

Không phải shop nào cũng cần cả hai. Nếu shop chỉ có vài đơn mỗi ngày, bảng đơn hàng chưa đủ lớn để HPOS tạo khác biệt đáng kể, trong khi rủi ro không tương thích plugin vẫn còn nguyên. Nếu một plugin quan trọng (thanh toán, vận chuyển, kế toán) chưa báo tương thích HPOS, hãy chờ bản cập nhật rồi mới chuyển. Với Redis, hosting chia sẻ thường không hỗ trợ, và việc ép cài qua cách tự chế dễ gây lỗi hơn là nhanh hơn. Trường hợp đó, nên làm trước các việc rẻ và an toàn như nén ảnh, cache đúng trang, dọn autoload; khi lượng đơn tăng hoặc nâng lên VPS thì mới tính đến Redis và HPOS.

Các bước dọn database khi tối ưu tốc độ website WooCommerce
Thứ tự dọn database an toàn cho shop WooCommerce.

Việc ngoài WooCommerce cũng làm shop chậm

Không phải chuyện gì cũng nằm trong plugin: máy chủ, ảnh và phiên bản PHP đều ảnh hưởng thẳng đến tốc độ shop. Về máy chủ, chúng tôi từng gặp một VPS có ổ đĩa đầy tới 96%, khiến backup và cập nhật thất bại âm thầm. Đó là điều chúng tôi đã gặp trên VPS, chưa phải trên một shop WooCommerce cụ thể. Về mặt kỹ thuật, ổ đĩa đầy cũng có thể khiến database không ghi được log và phiên mua hàng, làm đơn hàng lỗi lúc cao điểm; đây là suy luận từ cách hệ thống hoạt động, không phải trải nghiệm chúng tôi từng ghi nhận.

Về ảnh, ảnh sản phẩm vẫn là phần nặng nhất của trang danh mục. Khi tối ưu hmarketing.vn, chúng tôi đưa ảnh trang chủ từ khoảng 8 MB xuống khoảng 1,5 MB và tạo sẵn ảnh WebP cạnh ảnh gốc. Cách làm này áp dụng được cho shop: nén ảnh khi tải lên, dùng WebP, lazy load ảnh dưới màn hình đầu. Lưu ý thực tế: xoá cache sai thư mục thì khách vẫn thấy bản cũ, nên sau mỗi lần chỉnh hãy kiểm tra bằng trình duyệt ẩn danh.

Cuối cùng là PHP và trang quản trị. Cập nhật PHP đúng cách vừa nhanh hơn vừa an toàn hơn, nhưng cần xác nhận plugin thanh toán và vận chuyển tương thích trước khi chuyển. Giới hạn tính năng Heartbeat của WordPress trên trang quản trị cũng giúp trang đơn hàng đỡ giật khi nhiều người cùng thao tác.

Thứ tự nên làm khi tối ưu tốc độ website WooCommerce

Hãy làm từ việc ít rủi ro đến việc nhiều rủi ro, và đo lại sau mỗi bước để biết bước nào thật sự có tác dụng. Thứ tự ở bảng dưới là quy trình HPB áp dụng cho shop WooCommerce, không phải mô tả một case cụ thể.

BướcViệc làmRủi ro
1Sao lưu, đo tốc độ ban đầu (trang chủ, sản phẩm, checkout)Không
2Nén ảnh, bật WebP, lazy loadThấp
3Cấu hình cache, loại trừ đúng giỏ hàng, thanh toán, tài khoảnTrung bình, cần thử đặt hàng thật
4Xử lý cart fragments và script thừa ở checkoutTrung bình
5Dọn database, bật Redis object cacheCao nếu không có backup
6Đo lại và so sánh với số liệu ban đầuKhông

Nếu shop đang bán hằng ngày và bạn không có bản staging, đừng tự làm các bước 3 đến 5. Một thay đổi cache sai có thể làm khách thấy giỏ hàng cũ hoặc không thanh toán được. Đây là lúc nên nhờ đơn vị có quy trình rõ: chúng tôi mô tả việc này ở dịch vụ tối ưu tốc độ website, gồm đo trước, làm trên bản thử, đo lại sau. Nếu bạn muốn hiểu chi phí trước khi quyết định, đọc thêm chi phí tối ưu tốc độ website WordPress, và nếu cần biết quy trình đầy đủ thì xem quy trình tối ưu tốc độ website.

Câu hỏi thường gặp

Website WooCommerce nên tải trong bao lâu?

Google đặt ngưỡng LCP tốt là không quá 2,5 giây, tính cho phần nội dung lớn nhất trên màn hình. Với shop, hãy đo riêng 3 trang: trang chủ, trang sản phẩm và checkout, vì mỗi trang chậm vì lý do khác nhau. Nguồn ngưỡng chính thức có tại tài liệu Core Web Vitals của Google.

Có nên cache trang giỏ hàng và checkout không?

Không. Hai trang này hiển thị dữ liệu riêng của từng khách nên phải loại khỏi cache toàn trang. Cache nhầm có thể gây hiện giỏ hàng sai hoặc lỗi thanh toán. Hãy dùng quy tắc loại trừ có sẵn của plugin cache và thử đặt một đơn thật sau khi cấu hình.

Đổi hosting có làm shop nhanh hơn không?

Có thể, nếu nguyên nhân nằm ở máy chủ quá tải hoặc tài nguyên không đủ cho database. Nhưng nếu vấn đề là plugin nặng hay database phình to, chuyển hosting chỉ che được một phần. Nên đo điểm nghẽn trước rồi mới quyết định đổi.

Tắt cart fragments có an toàn không?

An toàn nếu bạn chỉ tắt ở các trang không hiển thị mini cart và đã thử kỹ. Tắt toàn bộ khi theme vẫn dùng icon giỏ hàng động sẽ làm số lượng sản phẩm không cập nhật. Hãy thử trên staging trước.

Bao lâu nên dọn database một lần?

Phụ thuộc lượng đơn hàng và số plugin. Với shop nhỏ, kiểm tra mỗi quý là hợp lý; shop nhiều đơn nên theo dõi thường xuyên hơn. Luôn sao lưu trước khi dọn và không xoá dữ liệu đơn hàng, khách hàng.

Shop WooCommerce của bạn đang chậm?

Gửi địa chỉ shop, chúng tôi sẽ xem giỏ hàng, checkout và database, chỉ ra điểm nghẽn trước khi đề xuất việc cần làm. Báo giá chính xác sau khi xem yêu cầu.

Nhắn Zalo 0913 337 280 Gửi yêu cầu tư vấn

Chia sẻ bài viết:
Facebook Zalo

Gọi điện ngay

Liên hệ tư vấn