Không Có Gì

www.mediafire.com/tuchikara


Bạn nghĩ gì về bài viết này?

Tối ưu hóa code để Opencart load nhanh hơn.

Đối với một website thương mại, thì thời gian load trang là điều rất quan trọng. Tốc độ load trang phụ thuộc vào 2 yếu tố là hardware và software.

Về Hardware: Cái này thì chúng ta không can thiệp được ngoại trừ bỏ thêm tiền để nâng cấp gói host server.

Về Software: Chúng ta có thể làm 2 việc, một là tối ưu hóa hình ảnh để dữ liệu cần tải về từ server và máy khách là tối ưu nhất (chất lượng hình ảnh chấp nhận được và kích thước là nhỏ nhất), các bạn có thể tham khảo ở đây về tối ưu hóa hình ảnh. Hai là tối ưu hóa code để hardware tốn ít thời gian xử lý nhất. Bài viết này hướng dẫn cách hai, nhưng ở mức cực kỳ đơn giản.

Nền tảng Opencart thiết kế không được tối ưu cho thời gian xử lý của server. Đối với những site có số lượng sản phẩm ít, thì điều này khó nhận biết được. Tuy nhiên với trường hợp site với số lượng nhóm sản phẩm trên 100, số lượng sản phẩm trên 10.000, thì vấn đề này bắt đầu xuất hiện.

Nguyên nhân gây chậm là do mỗi khi chúng ta mở một nhóm sản phẩm (category) hoặc một sản phẩm (product) thì nền tảng Opencart sẽ thực hiện queries tất cả các nhóm sản phẩm, sản phẩm có trên website (cái dở là ở chỗ này). Và nữa, lại còn order by và count cho các queries này. Mỗi một thao tác thêm vào queries sẽ tăng thêm thời gian xử lý cho server, đặc biệt là thao tác sắp xếp và đếm sản phẩm mất rất nhiều thời gian xử lý. Điều này dẫn đến việc khách hàng phải chờ lâu để nhận thông tin sản phẩm được trả về từ server, và dĩ nhiên họ sẽ bỏ qua trang web của bạn.

Để giải quyết toàn diện, thì chúng ta phải điều chỉnh lại core code. Vấn đề này nên để lại cho đội ngũ phát triển Opencart. Chúng ta không thể và cũng không nên sửa đổi.

Ở bài viết này, tôi sẽ hướng dẫn các bạn một vài thao tác đơn giản để có thể cải thiện phần nào tốc độ xử lý và load trang của server trên Opencart. Phiên phản điều chỉnh là 1.5.6.1. (những phiên bản khác cũng tương tự như hướng dẫn.)

Lưu ý: Nếu sites của bạn có số nhóm sản phẩm dưới 50 hoặc số sản phẩm dưới 500, thì không cần điều chỉnh, vì với số lượng như vậy thì bất kỳ server host nào cũng có thể xử lý tốt. Dù code có dở, chúng ta sẽ không cảm nhận được độ trễ 😉

Bài hướng dẫn dưới đây sẽ bỏ toàn bộ phần left column trên website. Vì vậy nếu việc bỏ đi left column mà các bạn thấy nó ảnh hưởng đến layout của site mình, thì không nên tiếp tục.

1) Chúng ta sẽ thay đổi một số file, vì vậy các bạn cần Backup website hoặc tối thiểu là backup những file mà chúng ta chuẩn bị sửa để có thể phục hồi nếu có sai sót xảy ra.

2) Bạn mở file ở đường dẫn  /catalog/controller/product/category.php

Tìm đến dòng 184 có nội dung như ở dưới:

$product_total = $this->model_catalog_product->getTotalProducts($data);

Thay thế thành

 //$product_total = $this->model_catalog_product->getTotalProducts($data);

Mô tả: Chúng ta chuyển đoạn code trên thành comment để bỏ đi phần đếm sản phẩm theo nhóm sản phẩm.

3) Bạn mở file ở đường dẫn  /catalog/controller/product/category.php

Tìm đến dòng 187 có nội dung như ở dưới:

'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),

Thay thế thành

'name' => $result['name'],

Mô tả: Xóa luôn phần thể hiện trên website (tổng số sản phẩm theo nhóm sản phẩm), vì chúng ta đã bỏ đi phần count số sản phẩm ở phía trên.

4) Bạn mở file ở đường dẫn /catalog/controller/product/category.php

Tìm đến dòng 388 có nội dung: 'common/column_left',

Thay thế thành: // 'common/column_left',

Mô tả: Bỏ luôn phần tạo cột bên trái khi xem nhóm sản phẩm (Category View)

5) Bạn mở file ở đường dẫn  /catalog/controller/product/product.php

Tìm đến dòng 463 có nội dung: 'common/column_left',

Thay thế thành: // 'common/column_left',

Mô tả: Bỏ luôn phần tạo cột bên trái khi xem sản phẩm (Product View)

6) Bạn mở file ở đường dẫn  /store/catalog/view/theme/default/template/product/product.tpl

Tìm đến dòng 1 có nội dung như ở dưới

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>

Thay thế thành <?php echo $header; ?><?php echo $column_right; ?>

Mô tả: Bỏ luôn phần tạo cột bên trái khi xem sản phẩm (Product View Theme)

7) Bạn mở file ở đường dẫn

/store/catalog/view/theme/default/template/product/category.tpl

Tìm đến dòng 1 có nội dung như ở dưới

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>

Thay thế thành <?php echo $header; ?><?php echo $column_right; ?>

Mô tả: Bỏ luôn phần tạo cột bên trái khi xem nhóm sản phẩm (Category View Theme)

Xong. Kiểm tra lại tốc độ load website của bạn.

Demo xem Nhóm sản phẩm (Category)

Demo xem Sản phẩm (Product)

TUCHIKARA