E cũng ko phải dân it nên lót tông lào ngồi hóng b share. ko biết mẹo ở đây là cách tổ chức, cách tối ưu db hay là giới thiệu các search engines như es, solr, algolia, sphinx etc. Chủ đề kiểu này rất nhiều ae quan tâm.
nói 1 triệu với 1 tỷ mà search giống nhau thì hơi quá nhưng ý muốn nói là nhanh và trong khoảng chấp nhận được. ví dụ: search thì mình sẽ ko sort và mặc định theo kết quả trả về của mysql + không đếm tổng số kết quả để phân trang mà chỉ cần biết có page tiếp theo để next hay không và thường index là chỉ trường title nó ko quá 200 ký tự và đánh full text search cho trường title này --- Double Post Merged, Jul 6, 2022, Original Post Date: Jul 6, 2022 --- mỗi lần search e show 20 kết quả/ trang thực tế trong database e lấy 21 kết quả/ trang. và nếu có 21 kết quả chứng tỏ có thêm trang tiếp theo và hiển thị button next + nếu page > 1 thì tức là có hiển thị butotn previous --- Double Post Merged, Jul 6, 2022 --- ví dụ đang ở page thứ 10 thì giả sử kết quả thứ 21 có id là 100000 thì câu query tieps theo là mình sẽ lấy 21 bản ghi và có title like "%text%" and id >= 1000000. mọi người cứ thử xem nó có nhanh không
@can haha cách này anh đã từng làm trên db 300M rows. Với keyword mà nó trả về kết quả trong 1,2 lần search đầu tiên thì cũng tạm được. Nhưng vẫn nhiều key nó cần 4-5 lần search mới ra kết quả sẽ chậm hơn. Tóm lại db to thì cứ sang ES mà xài, bao nhanh.
@money Lúc nãy e đọc bài này thì e nhớ có ai nói về tip này cách đây cũng vài năm trong forum này, nãy giờ tìm thử mà vẫn chưa ra thread đó. Cách này nói về làm sao phân trang tốt thì đúng hơn, chứ đâu nói về search nhiều. Tuy nhiên, nếu chúng ta để ý thì SE rất hiếm khi vào trang thứ 2 trở đi hơn so với các trang ko có phân trang, tương tự là users. Do đó, mấy sites của e chỉ toàn ra kết quả 1 trang, vậy là xong, ko cần làm phức tạp để giải quyết vấn đề.
Yes, vài năm trước anh có share cách này và đúng là hồi đó share trong bài về phân trang sao cho nhanh (ko nhớ là share trên 4rum hay trên group FB vì khá lâu rồi) Tuy nhiên anh cũng dùng cho search nữa. Đúng ra thì anh query như vậy vài lần, filter ra results rồi anh còn xử lý thêm và tạo thành 1 article xong cache luôn lại để bot vào index cho nhanh (tức là anh tạo article bằng search query trước rồi mới publish ra cho bot đọc, chứ anh ko dùng để làm cái search bar trên web vì cách này vẫn rất chậm nếu so sánh với ES) --- Double Post Merged, Jul 6, 2022, Original Post Date: Jul 6, 2022 --- @command vấn đề của cách làm kia là search trên dải id càng lớn nó càng chậm. Muốn nhanh thì dải id tầm 20tr là ổn (tuỳ cấu hình server). Nhưng kết quả show ra của page đầu (id từ 0 đến 20,000,000) chưa chắc đã là kết quả tối ưu để ranking.
Anh kỳ công nhé, như vậy hèn gì ít tốn tài nguyên server. Còn e thì cứ để realtime search cho ES xử lý và chỉ trả về 1 trang, ko làm trang 2,... Hiện tại site nhiều posts khoảng 12M posts thì ES trả kết quả trong 30-50ms (chỉ tính thời gian phản hồi giữa client và ES thui nhé, ko tính phần xử lý của PHP,...).
vừa mới thấy 1 site wp có 1,9M post, chứng tỏ nó cũng k ysl lắm đâu các bác ạ nhưng mà trên con số đó thì nên kiếm giải pháp khác thật
Vâng, site em đang chạy khoảng 150k post. WordPress. Do nội dung chỉ là text, không có hình ảnh, nên cũng khá nhẹ. Hosting 4 CPU, RAM 8GB, local US của Hetzer nha các bác. Em có dùng WP Rocket và Panel aaPanel.
bác @Quangsilic có thể chia sẻ thông số tốc độ Googlebots crawl urls trong GSC settings và thông số Core Web Vitals của mobile và desktop với VPS và site đó được ko? Mình thắc mắc VPS Hetzer ở US phản hồi thế nào
Cấu hình này cũng là khá cao cho nhu cầu chạy web theo quan điểm cá nhân của mình, vậy nên chuyện wordpress tải được 150k có vẻ chứng tỏ hiệu năng không thực sự tốt. Quan trọng nhất là cache nếu sử dụng framework chậm chạp, đó là mấu chốt để các framework như wordpress cân được vài nghìn tỉ post như tham nhũng cũng được ấy chứ.
Thời gian phản hồi của VPS ở US cao thế bác? Trung bình site bác 2,300ms cao lắm đó bác. Ngoài ra bác nên tối ưu Core Web Vitals cho mobile và desktop, nếu pass thì ranking keywords sẽ tốt hơn đó. Site 2 tháng tuổi của mình đây, site này đặt trên server cùi nhất AX41-NVMe của Hetzner ở Finland:
Của em cần cải thiện nhiều đấy, năm ngoái khi bắt đầu tập trung để tối ưu tộc độ, anh có cậu em làm web khoảng 40m records mà trong crawl stats, avg response time chỉ khoảng 30-40ms. Core vitals thì anh không có screenshots nhưng thấy bảo 100 điểm hết; FCP, speed index chỉ khoảng 1-1,3s