Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » OpenCart » Tăng tốc độ load trang OpenCart với Page Cache

Tăng tốc độ load trang OpenCart với Page Cache

Thứ Tư, 04/02/2015 by Hoàng Quách

Nội dung

  • 1 Page caching là gì?
  • 2 Lợi ích từ Caching?
  • 3 Làm thế nào để cache page?
  • 4 Kết luận
  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Page cache là gì? Tôi có thể cải thiện tốc độ load trang web Opencart như thế nào? Điều đó sẽ luôn là câu hỏi với bạn. Trong bài viết này, chúng ta sẽ giải thích thuật ngữ Page caching và cách thực hiện sử dụng PHP. Tuy nhiên, trong phạm vi bài viết tôi sẽ không cung cấp file đính kèm, các bạn xem những đoạn code mẫu dưới đây là có thể tự làm được.
PageCache

Page caching là gì?

Nếu bạn hiển thị dữ liệu động trong mỗi lần load trang web với trang có nội dung tĩnh chẳng hạn như trang chứa thông tin trong OpenCart hoặc thậm trí có thể là trang chủ bạn hãy để ý tốc độ load của nó. Page caching có thể giúp bạn giảm số lần request vào cơ sở dữ liệu. Lấy nội dung và lưu lại vào file ở lần load đầu tiên và những lần xem trang sau sẽ lấy dữ liệu từ file đã ghi lại đó gọi là cache. Nó thực sự cản thiện đáng kể tốc độ tải trang web đấy.

Lợi ích từ Caching?

Ngày nay, hầu hết các websites sử dụng hệ thống cache để giúp giảm thời gian nạp trang. Và chắc chắn có hàng trăm lợi ích với page caching mang lại.

Cache dữ liệu của bạn có thể giúp tăng tốc website, không những vậy nó còn có lợi cho SEO nữa và người dùng truy cập vào website cũng hạnh phúc hơn.

Làm thế nào để cache page?

Nếu bạn xem cấu trúc viết của OpenCart, chúng ta sẽ có thể hiểu rằng mỗi trang thông thường trong OpenCart được render sử dụng:

$this->response->setOutput($this->render());

Tìm hiểu sâu hơn, bạn sẽ tìm ra file response nằm tại system/library/response.php và tất cả các trang được điều hướng thông qua index.php

Bây giờ, chúng ta sẽ lưu kết quả HTML bởi file response.php và lưu bảo tồn chúng để sử dụng cho những lần sau.
Như vậy chúng ta sẽ cần một script để thực hiện việc caching. Tạo một script trong system/library/pagecache.php và cũng tạo thêm một folder trống (system/cache/pagecache).

Thêm vào đầu file đoạn code sau đây:

<?php
define('CACHE_FOLDER', DIR_CACHE . 'pagecache/'); // Cache Folder
define('CACHE_EXPIRE', '2400'); // Cache Expire in seconds
define('SITE_LANGUAGE', 'en'); // Default website language
define('SITE_CURRENCY', 'USD'); // Default website currency
$skip_routes = array( // Skip routes to cache. We will not cache product/compare since it should be unique to all clients
'product/compare'
);

Tiếp theo, chúng ta sẽ kiểm tra session có làm việc không.

if (!session_id()) {
ini_set('session.use_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
 
session_set_cookie_params(0, '/');
session_start();
}

Xong phần cơ bản, tiếp đến chúng ta sẽ kiểm tra một điều kiện khác như không tồn tại phiên làm việc của người dùng hoặc họ đã thêm một số sản phẩm trong giỏ hàng.

if(!empty($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'GET' && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off')) {
if ((isset($_GET['route']) && !in_array($_GET['route'], $skip_routes)) || !isset($_GET['route'])) {
if(empty($_SESSION['customer_id']) && empty($_SESSION['affiliate_id']) && empty($_GET['affiliate']) && empty($_SESSION['cart'])) {

Sau đó, chúng ta bắt đầu thực hiện tạo file cache vào thư mục chỉ định dành cho cache.

$domain = $_SERVER['HTTP_HOST'];
$language = (empty($_SESSION['language']) || !is_string($_SESSION['language'])) ? SITE_LANGUAGE : $_SESSION['language'];
$currency = (empty($_SESSION['currency']) || !is_string($_SESSION['currency'])) ? SITE_CURRENCY : $_SESSION['currency'];
$url = http_build_query($_GET);
 
$cacheFile = CACHE_FOLDER . $domain . '_' . $language . '_' . $currency . '_' . md5($url) . '.html';
define('CACHE_FILE', $cacheFile);
$cacheTime = CACHE_EXPIRE;

Cuối cùng, chúng ta sẽ kiểm tra nếu file tồn tại và xuất nội dung đã lưu trong file thay vì request từ database.

if (file_exists($cacheFile) && time() - $cacheTime < filemtime($cacheFile)) {
    $file = gzopen($cacheFile, 'r');
    $file = gzread($file, 1999999);
 
    echo $file;
 
    exit;
}
}
}
}
?>

Đó là tất cả những gì bạn hiểu về cache. Bước tiếp theo, chúng ta sẽ sửa lại file system/library/response.php để có thể lưu file. Bạn tìm hàm có chức năng sẽ gọi trong tất các file controller đó là setOutput.

public function setOutput($output) {

Trong hàm chúng ta cần sửa lại như sau. Đầu tiên kiểm tra có tồn tại đường dẫn lưu cache files. Bằng cách xác nhận hằng CACHE_FILE

if (defined('CACHE_FILE')) {

Rồi, bạn thực hiện viết nội dung vào file.

$cacheFile = CACHE_FILE;
 
$fp = gzopen($cacheFile, 'w9');
gzwrite($fp, $output);
gzclose($fp);
}

Cơ bản đã hoàn thiện, Như tôi đã nói rằng mọi trang được sử lý đều thông qua file index.php. Như vậy chúng ta chỉ cần “include” code cache trong file index.php mà tạo trước đó. Tìm dòng sau trong index.php

require_once('config.php');

Thêm vào bên dưới nó, dòng code sau:

require_once('system/library/pagecache.php');

Như vậy là xong, bạn đã hoàn thành script để cache web page! Xem toàn bộ script thực hiện công việc cache page trong OpenCart ở dưới đây:

<?php
define('CACHE_FOLDER', DIR_CACHE . 'pagecache/');   // Cache Folder
define('CACHE_EXPIRE', '2400');                     // Cache Expire in seconds
define('SITE_LANGUAGE', 'en');                      // Default website language
define('SITE_CURRENCY', 'USD');                     // Default website currency
$skip_routes = array(                               // Skip routes to cache
    'product/compare'
);
 
if (!session_id()) {
    ini_set('session.use_cookies', 'On');
    ini_set('session.use_trans_sid', 'Off');
             
    session_set_cookie_params(0, '/');
    session_start();
}
 
if(!empty($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'GET' && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off')) {
    if ((isset($_GET['route']) && !in_array($_GET['route'], $skip_routes)) || !isset($_GET['route'])) {
        if(empty($_SESSION['customer_id']) && empty($_SESSION['affiliate_id']) && empty($_GET['affiliate']) && empty($_SESSION['cart'])) {
            $domain = $_SERVER['HTTP_HOST'];
            $language = (empty($_SESSION['language']) || !is_string($_SESSION['language'])) ? SITE_LANGUAGE : $_SESSION['language'];
            $currency = (empty($_SESSION['currency']) || !is_string($_SESSION['currency'])) ? SITE_CURRENCY : $_SESSION['currency'];
            $url = http_build_query($_GET);
 
            $cacheFile = CACHE_FOLDER . $domain . '_' . $language . '_' . $currency . '_' . md5($url) . '.html';
            define('CACHE_FILE', $cacheFile);
            $cacheTime = CACHE_EXPIRE;
 
            if (file_exists($cacheFile) && time() - $cacheTime < filemtime($cacheFile)) {
                $file = gzopen($cacheFile, 'r');
                $file = gzread($file, 1999999);
                 
                echo $file;
                 
                exit;
            }
        }
    }
}
?>

Có rất nhiều hướng dẫn tạo cache trên internet sử dụng PHP với OpenCart, bạn có thể gõ từ khóa tìm trên google ngay tại trang kết quả đầu tiên, có vô số kết quả nhưng đây là những gì bạn có thể làm tốt nhất trên OpenCart.

Kết luận

Page caching sẽ giúp bạn giảm thời gian tải trang và cải thiện thứ hạng SEO, ưu tiên hiển thị trong cỗ máy tìm kiếm như Google, Bing. Bạn có thể xem xét mua công cụ SEO cho OpenCart. Rất nhiều SEO extension cho OpenCart nhưng lưu ý hãy chọn một script tốt nhất mà bạn đã từng sử dụng.

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: OpenCart Tìm kiếm: page cache, wp cache

Comments

  1. Van Troy says

    Thứ Bảy, 27/10/2018 at 11:42 sáng

    Hướng dẫn cụ thể hơn chút thì mấy bạn không biết code cũng làm được rồi anh?

    • Hoàng Quách says

      Thứ Năm, 01/11/2018 at 2:11 chiều

      hi, mình hướng dẫn cũng chi tiết rồi mà

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.