Hướng dẫn tối ưu hosting cPanel để tăng tốc độ & hiệu năng WordPress

cPanel là gì?

cPanel là phần mềm quản trị Hosting với giao diện đồ họa – thuộc loại phần mềm Control Panel trên hệ điều hành Web.

Tối ưu Hosting cPanel cho WordPress

Các Control Panel khác là Direct-Admin (DA) và Plesk (cho Windows Hosting). Nhưng cPanel vẫn là Control Panel mạnh mẽ nhất cho Linux Hosting.

Mặc định cPanel không có quá nhiều tính năng, nhưng các nhà cung cấp Hosting mua thêm các phần mềm khác và tích hợp vào cPanel cho khách hàng dùng: ví dụ JetBackup hay Litespeed Enterprise…

Do vậy, mỗi dịch vụ Hosting bạn sẽ thấy một vài phần trong cPanel khác nhau.

Các dịch vụ Hosting uy tín như HawkHost, A2 Hosting hay AZdigi thì hầu như các công nghệ tốt nhất trên cPanel đều được tích hợp.

A. Kích hoạt Let’s Encrypt SSL cho Domain

SSL là chứng chỉ bảo mật bắt buột phải có, vì các trình duyệt hiện đã cảnh báo hoặc chặn hoàn toàn Website nếu thiếu chứng chỉ SSL hoặc SSL hết hạn.

Let’s Encrypt là một dự án SSL miễn phí được các tập đoàn công nghệ lớn (như Google) bảo trợ, phục vụ nhu cầu của hàng tỷ Websites của người dùng.

Let’s Encrypt SSL tuy free nhưng uy tín chẳng kém các chứng chỉ SSL trả phí, nên ngay cả những blog triệu đô như Backlinko.com của chuyên gia SEO Brian Dean vẫn dùng cái này, thay vì trả vài $/ năm cho SSL trả phí.

 

Hầu hết các Hosting  đều tích hợp vào cPanel tính năng cho phép người dùng đăng ký và kích hoạt Let’s Encrypt SSL với chỉ 1 click, và chứng chỉ này tự động gia hạn sau 3 tháng, người dùng khỏi cần làm gì cả.

 

Một số Hosting như AZdigi hay StableHost, khi thêm domain vào hosting thì quá trình đăng ký và kích hoạt sẽ tự động luôn sau đó, người dùng chỉ cần kiểm tra trạng thái SSL trong mục SSL Status, nếu chưa có SSL thì chạy lại hoặc xem lỗi là do đâu:

Một số Hosting trong cPanel sẽ có mục Let’s Encrypt để chúng ta tự đăng ký SSL (nếu chưa được kích hoạt tự động) hoặc hủy đăng ký Lets Encrypt SSL!

Một số nguyên nhân đăng ký SSL Không thành công

Nguyên nhân 1 – Do chưa trỏ domain về Hosting

Nếu domain chưa trỏ về Hosting tương ứng thì chắc chắn Let’s Encrypt không thể xác thực domain đó có phải của bạn hay không, nên không cho phép bạn đăng ký.

Nguyên nhân 2 – Đang bật CDN cho Website

CDN – hay Content Delivery Network – là dịch vụ phân tán dữ liệu giúp lưu dữ liệu của Website trên hệ thống máy chủ nằm trên khắp thế giới – nhờ đó tăng tốc độ load Website cũng như giúp chặn các đợt tấn công DDos…

CloudFlare là dịch vụ CDN miễn phí được nhiều người dùng hiện nay, khi đăng ký CloudFlare cho Website, bạn có thể tùy chọn chỉ dùng DNS – (Name Server trung gian) hoặc dùng cả CDN (bật đám mây vàng cho domain).

Nhưng khi bật CDN, giữa domain và hosting không trực tiếp kết nối mà qua lớp trung gian là Máy chủ của dịch vụ CDN. Do đó nếu bạn đăng ký Let’s Encrypt thì nó không thể xác thực được domain đang trỏ về hosting (vì lúc đó domain trỏ về máy chủ CDN).

Cách giải quyết là khi đăng ký hoặc gia hạn Let’s Encrypt SSL, bạn tạm tắt CDN đi, sau khi đăng ký hoặc gia hạn thành công, hãy bật lại!

 

B. Bật Nén GZIP để tăng tốc Website

Nén Gzip là tính năng bắt buột phải có trên Website hiện nay, nó giúp tăng tốc độ load rất đáng kể.

Nén Gzip là phương thức nén các file tĩnh trên Server trước khi được trình duyệt tải về – giải nén và thực thi. Các file có thể nén là HTML, JS, CSS hay .XML, JSON.

Toàn bộ các trình duyệt phổ biến hiện nay đều hỗ trợ các file nén Gzip. Dung lượng các file khi nén giảm trung bình đến 80%, nhờ đó tốc độ tải và băng thông giảm cực tốt. Xem hình:

Không phải hosting nào cũng bật sẵn tính năng nén Gzip cho bạn. Chúng ta phải kiểm tra xem Website có đang hỗ trợ Gzip không, nếu không thì sẽ bật nó trên Hosting.

Cách kiểm tra Gzip có được bật chưa

Có rất nhiều công cụ để kiểm tra Gzip có được bật trên Website hay chưa. Nhưng ta chỉ cần dùng một trong 2 trang sau là đủ:

Check GZIP compression

GTMetrix

Kiểm tra Gzip trên GTmetrix

Một công cụ khác là Google PageSpeed Test, tuy nhiên, cái này đôi lúc gây hiểu lầm vì ngay cả khi bạn đã bật nén Gzip nó vẫn có thể báo là cần bật nén cho một số file mà ‘nó nghĩ’ còn có thể nén được thêm.

Tối ưu điểm số cho Google PageSpeed Insight là cuộc chơi tốn nhiều công sức và thực sự không mang lại nhiều cải thiện quá nhiều về tốc độ nên chúng ta sẽ để riêng ở một chủ đề khác.

Google PageSpeed Insight yêu cầu bật nén ngay cả khi đã bật Gzip

3 Cách bật Nén Gzip trên Hosting cPanel

Để bật nén Gzip trong cPanel rất dễ dàng, tuy nhiên không phải cPanel của dịch vụ nào cũng hỗ trợ đầy đủ one-click Gzip, đôi lúc chúng ta phải tự thêm code vào file .htacess để bắt hosting bật Gzip.

Chúng ta sẽ xem lần lượt từng phương pháp, hãy chọn cách làm phù hợp nhất cho bạn. Sau khi áp dụng một cách nếu kiểm tra vẫn chưa bật Gzip thì bạn thử cách tiếp theo nhé!

CÁCH 1 – DÙNG PLUGIN TĂNG TỐC CACHING

Các plugin tăng tốc như WP-Rocket, WP Fastest Cache… đều tự động hỗ trợ bật nén GZIP khi kích hoạt chúng, nên nếu bạn dùng các plugin này thì không cần thao thác ở cách 2 & 3.

Một số plugin khác như W3 Total cache cho phép tùy chọn bật nén Gzip.

Riêng WP Super Cache hay Litespeed Cache plugin không tự động bật Gzip, nên bạn cần bật trên cPanel (cách 2) hoặc thêm code vào .htacess (cách 3).

CÁCH 2 – BẬT GZIP TẠI MỤC OPTIMIZE WEBSITE

Bạn login vào cPanel, nếu có mục Optimize Website thì quá tốt (thường nằm ở phần Softwares):

Mở mục Optimize Website và chọn như hình dưới, và Update Settings:

Việc chọn Compress All Content hay Compress the specified MIME types không khác nhau nhiều, vì những file được nén hiệu quả nhất là MIME types.

Thao tác ở Optimize Website thực chất cùng làm một việc như cách 2 là khai báo các dòng code vào file cấu hình .htaccess của hosting để bắt nó bật Gzip cho toàn bộ các Websites trên hosting.

CÁCH 3 – BẬT GZIP BẰNG CÁCH THÊM CODE VÀO .HTACESS

File .htacess là file để người dùng cấu hình các tính năng của hosting (như redirect, bật nén gzip…).

Rất nhiều thứ bạn có thể làm với file này nên chúng ta sẽ có một bài viết riêng cho nó.

Ở đây nếu bạn cần bật Nén Gzip mà trong cPanel không có mục Optimize Website hoặc có nhưng sau khi làm Gzip vẫn không bật thì ta buột phải can thiệp vào file .htaccess của Hosting để ép nó phải bật.

Như đã nói, nếu cách 1 hoạt động thì ta cPanel đã thêm code khai báo bật Gzip vào .htaccess rồi. Nếu nó chưa hoạt động thì chúng ta mở file này lên xem sẽ không có code, vậy ta cần tự thêm vào rồi Save lại!

Trước tiên bạn vào thư mục gốc của Hosting trên File Manager, xem có file .htaccess chưa, thường mặc định nó ẩn để tránh bị người dùng xóa nhầm.

Để nhìn thấy bạn nhấp vào nút Settings và chọn Show Hidden Files như hình dưới:

Và .htacess ở đây:

Trong trường hợp sau khi chọn Show hidden files rồi vẫn chưa có .htaccess thì ta cần tạo nó:

Tạo file htaccess trong File Manager

Rồi!

Giờ mở file .htaccess (nhấp chuột phải -> Edit) và thêm các dòng code để khai báo cho Hosting bật Nén Gzip. Có 2 cách để khai báo, nhưng thường chúng ta thêm cả 2 đoạn code vào .htaccess để đảm bảo mọi trình duyệt đều nhận biết được:

Khai báo bằng mod_gzip:

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

 

Khai báo bằng mod_deflate:

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
<IfModule mod_setenvif.c>
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>

<IfModule mod_headers.c>
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>

 

File .htaccess đã khai báo bật Nén Gzip sẽ như sau (dùng cả 2 cách cho chắc ăn):

Xong rồi. Giờ bạn trở lại bước Check để xem nó có hiệu lực chưa nhé!

C. Tối ưu PHP cho WordPress

Đối với Shared Hosting dùng cPanel, cần chú ý 3 phần: phiên bản PHP đang dùng – các Options và Extensions đang bật.

Rất nhiều người dùng để PHP như mặc định của Hosting, đây là sai lầm lớn:

Nhà cung cấp Hosting thường set up các thông số với giá trị tối thiểu để việc sử dụng tài nguyên máy chủ ở mức thấp nhất.

Mặc định các Hosting setup PHP ở version 5.3 -> 5.6 và các thông số Memory_Limit là 128 MB (giới hạn RAM), max_execution_time là 30 (thời gian thực thi liên tục là 30s)…

Những thông số mặc định quá thấp sẽ gây ra rất nhiều lỗi khi cài themes, plugins và sử dụng các tính năng. Thường người dùng không biết nguyên nhân nếu không có thông báo từ themes và plugins.

Rất may là hiện nay hầu hết các Themes & Plugins tốt đều hiện cảnh báo khi PHP version va các chỉ số PHP Options không đạt yêu cầu.

Với các dịch vụ Hosting uy tín – thì họ set up nền tảng đảm bảo cho máy chủ hoạt động tốt ngay cả khi người dùng sử dụng mức tối đa tài nguyên đã mua.

Nên chúng ta cứ thoải mái cấu hình lại các thông số để tối ưu hiệu năng của Websites.

C.1 – Chọn PHP Version và Bật các Extensions cần thiết

Hiện nay WordPress khuyên dùng PHP từ 5.6 hoặc 7.0 trở lên.

Hiệu năng cao nhất là 7.3 tuy nhiên một số Themes và Plugins cũ có thể bị lỗi trên PHP 7.3 nên nếu bạn gặp sự cố khi chọn PHP 7.3 hãy quay lại chọn 7.2 hoặc 7.1 – một phiên bản vừa mạnh mẽ vừa ổn định!

Hiệu năng PHP 7 cao hơn rất nhiều so với PHP 5

 

Trong cPanel, thường là ở phần SOFTWARES, chọn Select PHP Version:

 

 

Ở bước tiếp theo, làm như hướng dẫn dưới hình:

Chọn PHP Version và Extensions
Bước 1 – Chọn PHP Version:
  • Ta chọn PHP 7.2 nhớ nhấp Set As Current để áp dụng cho toàn bộ Hosting.
Bước 2 – Bật các Extensions cần thiết

Những Extensions cần thiết thì bên dịch vụ Hosting họ đã cấu hình để bật sẵn.

Các Extension bắt buộc phải có:

  • ZIP: hỗ trợ file zip, phải bật để có thể giải nén file .zip trên hosting (như file theme, plugin…)
  • Mbstring: rất nhiều plugin và theme cần nó để hoạt động, thường được bật sẵn – nếu chưa bạn phải bật ngay.
  • Soap: nếu dùng WooCommerce thì buột phải bật extension này để các tính năng hoạt động đúng.

 

Các Extension tăng tốc Caching:

  1. OPcache – đây là công nghệ tăng tốc độ và hiệu năng cực kỳ đáng kể mà hầu như Hosting chất lượng nào cũng đã hỗ trợ.
  2. Memcached nếu bên Hosting có hỗ trợ công nghệ tăng tốc Memcached Server như HawkHost hay StableHost… và bạn đã cài đặt sẵn Memcached trên cPanel rồi mới bật Extension này.
  3. Redis – tính năng tương tự Memcached nhưng mạnh hơn. Ta chỉ dùng một trong 2, cũng cần cài trên cPanel rồi mới dùng được.

OPcache là module do Zend phát triển – có thể hoạt động ngay khi bật ở đây.

Riêng Memcached và Redis cần cài trên cPanel trước mới dùng được và không phải Hosting nào cũng hỗ trợ và cũng chỉ hỗ trợ một phần, không support nhiều khi bị lỗi.

Memcached và Redis cần nhiều kinh nghiệm mới dùng và xử lý các vấn đề phát sinh (khá nhiều) có lẽ ta nên bỏ qua.

Trong phần  – Tăng tốc WordPress , chúng ta sẽ tìm hiểu kỹ hơn về các extensions caching.

Một số Extension không thể hoạt động cùng nhau, khi bật lên sẽ gây lỗi (thường có kèm thông báo).

Nên ngoài những cái mặc định của Hosting và OPcache, Zip, Mbstring, Soap thì bạn không nên bật các cái khác nếu không hiểu rõ về chúng.

Nhớ sau bước 1 ta phải nhấn Save để lưu các tùy chọn.

Nếu sau khi lưu Website bị lỗi hãy nhấn vào Nút Use Defaults rồi Save để trở lại mặc định lúc đầu, rồi từ từ tìm hiểu xem lỗi nằm ở đâu nhé!

C.2 – Thiết lập lại PHP Options để tối ưu hiện năng

Sau khi lưu tùy chọn phần A, ta qua phần PHP Options bằng cách nhấp vào link Switch to PHP Options.

Nếu trong cPanel có phần MultiPHP INI Editor và MultiPHP Manager thì ta có thể vào đó chỉnh trực tiếp PHP Options – PHP version cho mỗi Website.

Hiện nay, PHP Options khuyên dùng sẽ như hình dưới:

Chọn PHP Options

Một vài tùy chọn cần lưu ý:

  • display_errors: tùy chọn này hiển thị lỗi PHP khi ta dùng themes & plugins bị lỗi. Giúp tìm lỗi để fixed nhưng bật lên cũng đồng nghĩa với show lỗi của Website cho thiên hạ, có thể bị lợi dụng bởi hacker. Tóm lại chỉ để ON khi bạn cần check lỗi.
  • log_errors: tùy chọn ghi lại các lỗi trên file log (nằm ở đâu đó trên hosting tùy vào việc cấu hình của chúng ta).
C.2.1 – Tối ưu max_execution_time

Max_execution_timeThời gian tối đa mà một chương trình (script – plugins/ functions) chạy liên tục trước khi nó bị ép phải dừng lại.

Đây là thông số cực kỳ quan trọng khi Import & Export cũng như Upload Theme/ Plugins/ Files.

Thường thông sô này mặc định chỉ 30 (s). Nếu chúng ta có một theme nặng 20 MB cần upload, mà mạng quá chậm, thì 30 s không đủ để upload xong, và lỗi Installation Failed sẽ xảy ra.

Tùy vào kích thước file cần upload hay qui mô của demo data khi import & export hoặc thời gian thực thi các tác vụ mà ta sẽ chỉnh thông số này phù hợp.

Bình thường khoản 300 (300 giây = 5 phút) là hợp lý. Một số themes Import Demo quá lớn như The7, Exploore… thì thông số có thể lên đến 3000s!

Có nên để Max_execution_time quá cao?

Thường không plugins nào đòi hỏi tới 1 giờ để thực hiện nhiệm vụ xác định nào đó. Nếu có thì có lẽ ta không nên dùng vì nó làm hao tổn tài nguyên của Hosting, gây chậm Websites.

Thông số Max_execute_time chính là vị thần canh giữ hiệu năng của Websites – những chương trình vận hành tốn nhiều tài nguyên vì thực thi quá lâu sẽ bị chặn đứng kịp thời.

C.2.2 – Tối ưu max_input_time

Max_input_time: là thời gian tối đa cho phép một chương trình (script – plugins/ functions) phân tích dữ liệu nhập vào trước khi nó bị buột phải dừng.

Đây là thông số liên quan trực tiếp đến Import Data. Thông số này nên cao đối với các bản Demo hay nội dung cần Import quá nặng (ví dụ Main demo của Theme The7). Thông số này nên từ 600s trở lên.

Có nên để Max_input_time quá cao?

Tương tự với Max_execution_time nếu dữ liệu bạn cần import mất đến vài giờ để hoàn thành thì bạn nên chọn các giải pháp Import qua MySQL (từ phpMyAdmin)!

C.2.3 – Tối ưu memory_limit

Memory_limit: dung lượng RAM tối đa mà Hosting có thể dùng.

Thường để hạn chế Server quá tải, bên nhà cung cấp Hosting để mặc định cái này hơi thấp (64 hoặc 128MB RAM).

Ta nên chọn thông số cao nhất mà họ hỗ trợ để Websites hoạt động mượt mà, có thể là 512 MB RAM đến 1 GB RAM.

C.2.4 – Tối ưu upload_max_filesize & post_max_size

Upload_max_filesize: kích thước tối đa có thể upload.

Nên chọn kích thước lớn nhất mà hosting hỗ trợ (ví dụ 1GB).

Ví dụ chúng ta cần upload bằng File Manager mã nguồn của toàn bộ một size WordPress lên hosting – mã ngồn này cỡ 300MB, thì chắc chắn bạn phải để chỉ số này từ 512MB trở lên nếu không sẽ bị lỗi Upload Failed!

Post_max_size: kích thước file lớn nhất có thể post qua POST method. Cái này bạn cũng nên chọn tối đa (hosting thường hỗ trợ đến 128MB).

C.3 – Sử dụng Multi PHP Manager & MultiPHP INI Editor

Nếu Hosting của bạn có nhiều Websites và mỗi Websites sử dụng tài nguyên chênh lệch nhiều thì cấu hình riêng mỗi site qua Multi PHP Manager và MultiPHP Ini Editor giúp bạn tối ưu việc sử dụng tài nguyên hosting để tất cả các sites đều hoạt động mượt mà.

Lưu ý:

Không phải Hosting nào cũng có Multi PHP Manager và MultiPHP Ini Editor trong cPanel. Đây là mục để chọn PHP version –  cấu hình PHP Options cho từng Website cũng như hỗ trợ bật/ tắt Nén Gzip trên từng Website.

Cũng trong cPanel – Phần SOFTWARES, chọn MultiPHP INI Editor. Tiếp theo , trong ôSelect Location, ta chọn Website cần chỉnh file php.ini:

MultiPHP INI Editor

Save khi tùy chỉnh các thông số phù hợp. Hãy nhấp Apply để lưu các lựa chọn cho Website!

 

D. Tăng RAM tối đa cho WordPress

Mặc định WordPress được khai báo để PHP dùng tối đa 40MB RAM cho site thường và 60 MB RAM cho Multisite.

Một số theme và plugin đòi hỏi mức RAM cao hơn để hoạt động, nên bạn có thể gặp lỗi như sau:

Fatal error: Allowed memory size of 157286400 bytes exhausted (tried to allocate 5775295bytes)

Hiện nay đa số các themes và plugins khuyên người dùng tăng chỉ số RAM tối đa cho WordPress lên 60 MB. Nhưng tốt nhất chúng ta tăng thành 96MB RAM, 128MB hoặc 256 MB nếu trên Hosting có ít Websites.

Riêng với các tác vụ thực hiện dưới quyền Administrator – cần nhiều RAM hơn các tác vụ ở Front-End, nên mức RAM tối đa có thể cao hơn.

Cách tăng WP Memory Limit

Để tăng RAM tối đa cho WordPres, chúng ta khai báo WP_MEMORY_LIMIT (cho tác vụ Front-End) và WP_MAX_MEMORY_LIMIT (cho tác vụ với quyền Administrator).

Mở file wp-config.php và thêm dòng khai báo sau ngay trước dòng “Happy Bloggings”:

define('WP_MEMORY_LIMIT', '128M');
define('WP_MAX_MEMORY_LIMIT', '256M');

Như hình bên dưới:

Lưu ý thông số PHP Memory Limit

Trong phần trước – Tối ưu PHP cho WordPress, chúng ta đã nói về chỉ số PHP Memory Limit. Vậy nó có khác WP Memory Limit?

Thực chất WP Memory Limit cũng là lượng RAM cấp cho PHP nhưng để thực hiện các công việc của site WordPress. Đây là lượng RAM dành cho mỗi site hoặc hệ thống site trên Multisite.

Trong khi PHP Memory Limit là RAM tối đa trên toàn bộ Hosting.

Do vậy, chỉ số PHP Memory Limit lúc nào cũng phải cao hơn WP Memory Limit dành cho Front-End và Administrator.

Nếu chỉ có một site trên Hosting, 2 chỉ số này có thể bằng nhau.

Càng nhiều Websites thì tổng lượng RAM dùng sẽ tăng lên, nếu toàn bộ Website hoạt động hết công suất – Dùng mức tối đa khai báo ở WP Memory Limit, thì có thể khiến RAM vượt quá mức cho phép trên toàn bộ Hosting (PHP Memory Limit), gây quá tải hosting.

Vậy bạn khai báo sao cho phù hợp, chỉ số WP Memory Limit không nên tùy tiện quá cao, WordPres core và hầu hết themes và plugins không cần dùng đến 256 MB RAM để hoạt động.

Chuc các bạn thành công!

 

Bài viết liên quan
Gọi ngay
Chat với chúng tôi qua Zalo
Facebook Messenger