Đăng nhập Đăng ký website CÙNG HỢP TÁC 
logo-website

Cài đặt và sử dụng memcache để tăng tốc độ cho website

Yêu cầu hàng đầu của Google Search đó là thời gian đáp ứng nhanh, nghĩa là website phải có thời gian tải từ khoảng 2s trở xuống, đây không phải là yêu cầu dễ dàng, trung bình đạt được tốc độ load từ 3-5s là đã đáp ứng được yêu cầu.

Có rất nhiều yếu tố ảnh hưởng đến tốc độ của website, bạn có thể tối ưu tốc độ website bằng công cụ PageSpeed Insights của Google, sử dụng công cụ này các bạn sẽ hiểu rõ các tiêu chí mà Google yêu cầu, từ đó biết được chính xác và cụ thể cần tối ưu hóa các yếu tố nào.
Trên thực tế để website tải về hoàn toàn mất trung bình từ 10-15s hoặc hơn tùy theo số lượng nội dung cần hiển thị, ngoài ra còn phụ thuộc vào cấu hình và phần cứng server. Vậy làm cách nào để rút ngắn thời gian tải webiste?, khái niệm cache (bộ nhớ đệm) ra đời để giải quyết vấn đề này.

Vậy Memcache là gì và tại sao chúng ta nên sử dụng?
Đầu tiên chúng ta cần tìm hiểu tầm quan trọng của cache và ảnh hưởng của nó đến tốc độ tải của website.
Ví dụ đơn giản trên website cần hiển thị 01 mục tin tức bao gồm tiêu đề, hình ảnh, mô tả, các thông tin này đều được lưu trong cơ sở dữ liệu.
Nếu không dùng cache, khi có truy cập vào website chúng ta sẽ có mô hình hoạt động sau:

Mô hình tải website không sử dụng cache
Theo mô hình ta thấy với mỗi truy cập thì tổng thời gian để hiển thị 01 dữ liệu trên website sẽ là 0.5s + 0.5s = 1s
Theo nguyên tắc trên nếu website có 10 mục, thì tổng thời gian hiển thị là 0.5x10 + 0.5x10 = 10s
Mà website có hàng trăm mục, nên chúng ta sẽ cần phải tối ưu hóa quy trình trên, chúng ta sẽ điều chỉnh để lần đầu tiên website sẽ lấy 10 dữ liệu, những lần tiếp theo sẽ không phải tốn thời gian lấy dữ liệu nữa.
Lần đầu tiên lấy dữ liệu chúng ta sẽ tốn nhiều thời gian hơn:
Tổng thời gian lần 1: 0.5s + 0.8s = 1.3s (0.8s là thời gian lấy 10 dữ liệu 01 lần từ database)
Tổng thời gian lần 2: 0.5s + 0.2s = 0.7s (0.2s là thời gian lấy dữ liệu tại chỗ)

Tổng thời gian lần 10: 0.5s + 0.2s = 0.7s
Như vậy tổng thời gian cần để hiển thị là: 1.3s + 0.7x9 = 7.6s (nhỏ hơn so với 10s theo cách trên)

Cơ chế lấy trước dữ liệu và lưu trữ để sử dụng cho những lần sau được gọi là cache.
Từ cách lưu trữ dữ liệu chúng ta có 2 khái niệm là filecache và memcache
Filecache: là lưu trữ dữ liệu xuống file
+ Ưu điểm: đơn giản, dễ thực hiện, có thể lưu trữ nhiều file, tốc độ nhanh hơn đọc từ database (dù bản chất của database cũng là đọc dữ liệu từ file)
+ Nhược điểm: tốc độ truy xuất dữ liệu phụ thuộc vào phần cứng của server
Memcache: là lưu dữ liệu trực tiếp trên Ram
+ Ưu điểm: tốc độ truy xuất dữ liệu là nhanh.
+ Khuyết điểm: muốn sử dụng phải cài đặt thêm memcached vào máy chủ.
Trong mỗi loại cache trên người ta lại sử dụng nhiều cách khác nhau để lưu trữ, như chỉ lưu dữ liệu thô, lưu cả cấu trúc dữ liệu hoặc lưu lại toàn bộ kết quả HTML v.v…

“Như vậy memcache hiểu đơn giản là cơ chế quản lý việc lưu trữ và truy xuất dữ liệu từ trên Ram của máy tính”

1. Cài đặt memcached trên Window
Tắt Webserver đang chạy
Bước 1: Cài đặt memcached
Download memcached tại đây:
https://thuonghieuonline.vn/downloads/memcached-1.4.5-win32.zip
https://thuonghieuonline.vn/downloads/memcached-1.4.5-amd64.zip
Giải nén file vào thư mục trên máy tính. Ví dụ: C:/memcached
Cài đặt memcached: Mở cửa sổ command, gõ vào lệnh sau:
C:/memcached/memcached.exe -d install
C:/memcached/memcached.exe -d start
Để chạy memcached như một dịch vụ của Window, sử dụng lệnh sau:
sc create "Memcached11211" binPath= "C:/memcached/memcached.exe -d runservice -p 11211" DisplayName= "Memcached11211" start= auto
Sau khi tạo xong dịch vụ, có thể start/stop dịch vụ Memcached11211 trong cửa sổ Services của window.
Bước 2: Cài đặt thư viện php_memcache.dll
Download file php_memcache.dll tại http://pecl.php.net/package/memcache/3.0.8/windows
Lưu ý: phải chọn đúng loại phiên bản window (32 hoặc 64 bit) và đúng loại phiên bản PHP (Thread Safe hoặc Non Thread Safe) mà bạn đã cài đặt.
php-memcached 3.x: Supports PHP 7.0 - 7.2.
php-memcached 2.x: Supports PHP 5.2 - 5.6.
+ Copy file php_memcache.dll vào thư mục extension của PHP (thư mục ext này thường nằm chung với thư mục cài php, muốn biết chính xác bạn mở file php.ini lên và tìm dòng extension_dir hoặc tìm trong Php Info)
+ Mở file php.ini và thêm vào cuối file dòng sau: extension=php_memcache.dll
+ Khởi động lại Webserver.
Nếu cài đặt và cấu hình thành công bạn sẽ thấy thông tin sau trong PHP Info:
Cấu hình memcached thành công

2. Cài đặt memcache trên CentOS
Trong phần này chúng ta sẽ cùng cài đặt memcached trên hệ điều hành CentOs 6.5 với Php 5.6.38.
Cần thực hiện các bước sau:
+ Cài đặt thư viện libevent, đây là thư viện mà memcached sử dụng
+ Cài đặt memcached server và khởi động dịch vụ này
+ Biên dịch và cấu hình memcached extension để đảm bảo tương thích với server và php

2.1 Cài đặt thư viện libevent
Kiểm tra thư viện libevent đã cài hay chưa:
ldconfig -p | grep event
Nếu thấy có thông tin nghĩa là libevent đã được cài đặt, nếu chưa có thì tiến hành cài đặt:

cd /usr/local/src/
wget "https://github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gz"
tar -xzvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure
make
sudo make install


2.2 Cài đặt memcached server

cd /usr/local/src
wget http://memcached.org/files/memcached-1.5.5.tar.gz
tar xvzf memcached-1.5.5.tar.gz
cd memcached-1.5.5.tar.gz
./configure && make && make test && sudo make install
Sau khi cài đặt xong, khởi động memcache:
memcached -d -u nobody -m 512 -p 11211 127.0.0.1


2.3 Biên dịch và cấu hình memcached extension

cd /usr/local/src/
wget -O memcache-2.2.7.tgz https://pecl.php.net/get/memcache-2.2.7.tgz
tar xvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config && make && make install


Sau khi biên dịch sẽ được file memcache.so
+ Copy file memcache.so vào thư mục extension của php, để tìm chính xác đường dẫn thư mục ext, mở file php.ini lên và tìm dòng extension_dir hoặc tìm trong thông tin Php Info
+ Mở file php.ini và thêm vào dòng sau: extension=memcache.so
+ Khởi động lại dịch vụ webserver:
service httpd restart

2.4 Kiểm tra memcached

php -m | grep memcache
nếu thấy kết quả là memcached nghĩa là đã cài đặt thành công memcached
Nếu cài đặt và cấu hình thành công sẽ thấy thông tin sau trong Php Info:
Cấu hình memcached thành công

3. So sánh hiệu quả khi sử dụng memcached
Sử dụng cùng website và cấu hình, không sử dụng các phần mềm hỗ trợ khác, chỉ bật và tắt memcache, filecache để so sánh hiệu quả sử dụng.
Trường hợp 1: Không dùng chức năng cache nào:
Không sử dụng chức năng cache
Sử dụng Developer Tools của Google Chorme để xem kết quả
Trong đó:
1. DOMContentLoaded: là thời gian load cấu trúc của website.
2. Load: là tổng thời gian load thông tin trên website.

Trường hợp 2: Sử dụng chức năng Memcache
Sử dụng chức năng Memcached

Trường hợp 3: Sử dụng chức năng Filecache và tắt chức năng Memcache
Sử dụng chức năng Filecache

Trường hợp 4: Sử dụng chức năng Filecache và chức năng Memcache
Sử dụng chức năng Filecache và Memcached

Các so sánh trên chỉ mang tính tương đối, nhưng là cách đơn giản nhất để thực hiện.
Để đánh giá chi tiết chúng ta cần cài đặt và sử dụng công cụ chuyên dùng Xdebug, ngoài khả năng cung cấp chi tiết các lỗi đã xảy ra xdebug còn cung cấp tính năng profile giúp ta theo dõi thời gian và số lần thực thi của mỗi hàm, tìm ra điểm nghẽn của hệ thống và các thao tác chiếm nhiều thời gian nhất. Bằng cách so sánh các thông tin này chúng ta sẽ có được kết quả chính xác nhất.
Sử dụng Xdebug Profiler và Qcachegrind
Sử dụng Xdebug với tính năng profiler và dùng Qcachegrind để xem kết quả

Tất nhiên chúng ta không thể so sánh đến từng giây vì ngay cả khi refresh lại website thì thời gian mỗi lần cũng đã thay đổi, nhưng chúng ta có thể xem khoảng thời gian ước lượng bằng cách chạy nhiều lần để so sánh hiệu quả.
Cấu hình thực hiện
Thời gian trung bình (s)
Không thực hiện bất kỳ chức năng cache nào
4.52 – 4.75 s
Sử dụng chức năng memcache
4.34 – 4.42 s
Sử dụng cache file + tắt chức năng memcache
3.35 – 3.89 s
Sử dụng cache file + bật chức năng memcache
3.35 – 3.64 s

Như vậy sử dụng cache chắc chắn sẽ giúp tăng tốc độ của website, ngoài ra kết hợp với tính năng cache các file js, css của trình duyệt và nén dữ liệu sẽ giúp website chạy nhanh hơn.
Tùy vào website và framework đang sử dụng mà bạn chọn phương pháp cache phù hợp hoặc sử dụng kết hợp tất cả các phương pháp và áp dụng mỗi loại cho từng phần trên website.

4. Thông tin sử dụng memcached:
Để theo dõi hoạt động của memcached bạn phải thông qua dòng lệnh hoặc sử dụng công cụ Php View Cached.
Một số lệnh thông dụng để quản lý:
- memcached -d install: Cài đặt memcached
- memcached -d start hoặc service memcahed start: Khởi động memcached
- memcached -d restart hoặc service memcached restart: Khởi động lại memcache
- net stop memcahed hoặc service memcached stop: Stop memcached
- memcached -d uninstatll: Gỡ cài đặt memcached
- memcached -p number: Set port TCP cho memcache. Mặc định là cổng 11211
- memcached -m number: Thay đổi kích thước bộ nhớ memcache. Mặc định là 64Mb
- memcached -c number: Thay đổi số connect tối đa. Mặc định là 1024 kết nối
Xem dung lượng memcached đã sử dụng


Các tin khác
  • CopyRight

  • DMCA.com Protection Status
    Logo thông báo Bộ Công Thương
Chịu trách nhiệm Ông Nguyễn Hữu Dũng
54 Đường 26, P.Hiệp Bình Chánh, Q.Thủ Đức, Tp.HCM
Hotline: 0908.622.880 - Email: info@giacongweb.com
Zalo: 0908622880 - Website: www.giacongweb.com
Đang online 17
Tổng truy cập 19.620