NỘI DUNG
Giảm TTFB trên website WordPress
Trong quá trình làm việc mình gặp khá nhiều trường hợp các khách hàng bên mình than phiền website của họ load chậm gây trở ngại cho việc kinh doanh. Thực tế một website hoạt động trong các lĩnh vực bán hàng, tin tức mà mất hơn 5s để load thì số lượng rời trang sẽ rất cao. Gây trở ngại cho việc kinh doanh và mất thứ hạng trên các công cụ tìm kiếm.
Ít nhiều các bạn webmaster thường nghe đến thông số TTFB. Và ở bài viết này mình xin chia sẽ một vài cách mà mình đã thực hiện tối ưu, giảm thông số này cho các website khách hàng của mình. Hãy cùng mình theo dõi nhé.
I. Tổng Quan
TTFB (viết tắt của Time To First Byte) là thông số thể hiện thời gian Server xử lý để tạo ra mã HTML gửi về đến trình duyệt byte đầu tiên, Thông số này được xác định bằng 5 yếu tố chính như sau:
- Mã nguồn chưa tối ưu đẫn đến khi có truy cập, máy chủ webserver phải làm việc để xử lý code để tạo mã html cần nhiều thời gian đặc biệt nếu có truy vấn về dữ liệu sẽ ảnh hướng rất lớn đến thông số này
- Tài nguyên gói dịch vụ không đủ hoặc đang quá tải dẫn đến máy chủ webserver xử lý mã code lâu hơn
- Chưa thiết lập cache để cache các mã code mà webserver thường xuyên xử lý và cache các dữ liệu tĩnh, việc này sẽ làm server xử lý lặp lại mã code giống nhau và làm tăng đáng kể giá trị TTFB
- Đường truyền mạng từ nơi truy cập(hoặc tại nơi kiểm tra) tới server chứa không tốt, thời gian truyền tải các gói dữ liệu mất nhiều hơn cần thiết.
- Thời gian phân giải DNS cũng có thể ảnh hướng đến đánh giá này.
Ở trên là các nguyên nhân chủ yếu làm cho thông số TTFB tăng cao. Thông số này càng thấp càng tốt và Google khuyến cáo một website thông số TTFB trung bình dưới 200ms. Hãy cùng mình xử lý các nguyên nhân trên nhé.
Ở đây mình xử lý một website load khá chậm. Website load trang chủ với 147 request, 1.5MB transferred, 4.6MB resources và TTFB 4.89s, thực sự con số 4.89s này quá lớn so với tiêu chuẩn 200ms Google đề xuất.
II. Hướng xử lý
1. Chọn Lọc Hosting
Hosting đóng vai trò chủ chốt cho website hoạt động. Web nhanh hay chậm phụ thuộc vào Hosting nhưng không hoàn toàn vì còn những yêu tố khác như mã nguồn, database… Và mình sẽ nhấn mạnh ở các bước tiếp theo. Hãy cùng mình tham khảo và chọn lọc hosting.
Website trên mình xử lý đang chạy trên Cloud Hosting tại AZDIGI. Mình luôn chọn lọc các Hosting ở các nhà cung cấp uy tín, host trên nền tảng Cloud vì cho hiệu năng tốt và uptime rất cao.
Nếu bạn đang băn khoăn lựa chọn một nhà cung cấp để đặt Website bạn có thể xem qua các dịch vụ Hosting tại AZDIGI đặc biệt là Turbo Cloud Hosting, Hoặc TURBO BUSINESS HOSTING . Ngoài ra AZDIGI đang có chương trình bốc thăm trúng thưởng với tổng giải thưởng lên đến 70 triệu đồng cơ hội trúng Macbook và các quà tặng hấp hẫn khác. Chi tiết bạn hãy tham khảo link sau nhé.
ĐU ĐƯA HOSTING – RINH MƯA QUÀ TẶNG
Sau khi đã chọn lựa được Hosting tốt, bạn hãy bắt đầu kiểm tra website bên trong.
2. Tối Ưu Website
Tối ưu website vẫn luôn là vấn đề ưu tiên hàng đầu. Vì nếu mã nguồn bạn khi xây dựng và sử dụng một thời gian dài mà không dọn dẹp, tối ưu thì dẫn đến trì trệ.
2.1 Xóa plugin không cần thiết
Kho thư viện Plugin quá hấp hẫn đến người làm web, tuy nhiên bạn không nên lạm dụng quá nhiều Plugin mà chỉ nên cài các Plugin thực sự cần thiết cho web bạn. Mỗi Plugin có một tính năng nhất định sẽ chiếm dụng làm giảm đi hiệu suất cũng như tốc độ của website bạn.
2.2 Optimize Database
Website bạn hoạt động lâu năm dần dần làm phình Database, nếu bạn không tối ưu các bảng database lại thì sẽ làm chậm website. Khi client truy cập vào website, search một bài viết hoặc mua sản phẩm. Khi đó lệnh gọi vào Database và phản hồi lại cho client sẽ chậm nếu không tối ưu.
Bạn hãy truy cập vào Database dọn dẹp các Table không còn sử dụng, xóa các transient. Nếu bạn không rành về việc này hãy dùng các Plugin trợ giúp như LiteSpeed Cache, WP-Rocket, WP-Optimize – Clean – Compress – Cache.
2.3 Tối ưu hóa ảnh
Bạn hãy hình dung nếu website bạn load nhiều ảnh, và các ảnh đều thuộc chất lượng cao thì khi tải trang chủ thời gian tải những tấm ảnh chất lượng cao này sẽ làm mất rất nhiều thời gian tải trang. Nếu Hosting không đủ mạnh thì sẽ gây quá tải không thể xử lý tốt các yêu cầu. Do đó bạn nên tối ưu lại các tấm ảnh chuẩn bị upload và thư viện ảnh đã upload.
Mình không khuyến khích cài Plugin nhiều nhưng việc tối ưu ảnh cần được xử lý do đó bạn hãy nhờ Plugin hỗ trợ. Hiện có nhiều Plugin miễn phí hỗ trợ tối ưu rât tốt và các Plugin trả phí. Trong đó WP Smush Pro ,resmush, ewww image optimizer, litespeed tối ưu rất tốt.
2.4. Cấu hình Cache
Các website cần có một bộ nhớ đệm để giảm đi số tiến trình, số lần gọi xử lý, khi toàn bộ website của bạn được cache thì client truy cập vào website gọi 1 request lúc đó server sẽ lấy dữ liệu đã cache trả về response. Giả sử 100 người cùng một lúc truy cập vào website bạn và cùng thực hiện gọi 1 lần, server sẽ phải response liên tục dẫn đến overload, lúc đó bạn sẽ thấy một hiện tượng RAM, CPU sẽ dao động và full. Nếu website đã có cache thì sẽ giảm tải đi cho máy chủ của bạn.
Ở website trên mình thực hiện cấu hình với WP-ROCKET bản trả phí. Đề cấu hình WP-ROCKET bạn hãy xem qua bài viết sau để Download WP-ROCKET và cấu hình nhé.
- Hướng dẫn cấu hình WP Rocket và Redis Object Cache tăng tốc website WordPress
- Hướng dẫn sử dụng và cấu hình Plugin WP Rocket
2.5 Cấu hình Redis Cache
Redis là một phần mềm mã nguồn mở (Open-source) có tác dụng lưu trữ cấu trúc dữ liệu vào bộ nhớ (RAM) trên máy chủ. Phần mềm này có thể được sử dụng như một cơ sở dữ liệu hoặc dùng làm bộ nhớ đệm (cache).
Đối với website WordPress, Redis có thể sử dụng để lưu những dữ liệu đệm khi xử lý được khai báo bởi lớp WP_Object_Cache. Nói một cách ngắn gọn và dễ hiểu, thì Object Cache trong WordPress sẽ giúp máy chủ tiết kiệm thời gian xử lý những truy vấn trong PHP hoặc Database bằng việc lưu các dữ liệu đệm vào một nơi nào đó, và Redis sẽ giúp chúng ta lưu trữ các dữ liệu này vào bộ nhớ để có tốc độ truy xuất nhanh hơn là lưu vào ổ cứng.
3. Điều chỉnh Hosting
Nếu bạn đang sử dụng Hosting, hầu như Hosting hiện tại đều sử dụng cPanel và DirectAdmin thì bạn đã chắc chắn biết cách sử dụng và khai thác hết chức năng của Hosting chưa. Hãy tham khảo các cách sau nhé.
3.1. Lựa chọn phiên bản PHP
Các nhà cung cấp hosting đều sử dụng PHP 5.6 làm mặc định vì nó phổ biến và tương thích hầu hết các mã nguồn cũ và mới. Tuy nhiên phiên bản này xuất hiện khá lâu và website ngày một đổi mới.
Nếu bạn đang sử dụng WordPress, Joomla, Magento…, hãy lựa chọn phiên bản PHP 7.1 (hoặc cao hơn và hiện tại bản mới nhất là 7.4) thay thế cho PHP 5.6. Bởi vì những loại mã nguồn thông dụng này được update liên tục, đảm bảo tương thích 100% với PHP mới nhất, tất nhiên phải trong điều kiện bạn thường xuyên update version.
Theo một số nghiên cứu đánh giá, WordPress sử dụng PHP 7 cho hiệu năng hoạt động cao gấp 3 lần so với PHP 5.6. Một điểm lưu ý nữa, phiên bản PHP 5.6 hiện nay đã ngừng phát triển, chỉ còn hỗ trợ những bản vá bảo mật nguy hiểm mà thôi. Xem thêm PHP Supported Versions.
Sử dụng PHP 7 là xu thế tất yếu, nếu code của bạn chưa tương thích tốt, lời khuyên của mình là hãy dành thời gian để tối ưu, thay thế các function đã deprecated, tận dụng tối đa sức mạnh của PHP 7.
Hầu hết các nhà cung cấp hosting đều cho phép bạn chuyển đổi giữa các phiên bản PHP. Trong cPanel, bạn hãy chọn Select PHP Version.
3.2. Kích hoạt một số extension cần thiết
PHP 7x đi kèm một số extension giúp nâng cao hiệu suất hoạt động của website lên rất nhiều, ví dụ như Zend Opcache, Memcached, Redis
Vẫn trong trang PHP Selector | extensions, bạn hãy click lựa chọn thêm opcache và memcached rồi nhấn Save để lưu. Xem hình bên trên.
Opcache là một extension rất quan trọng, giúp những file .PHP không cần phải biên dịch lại mỗi khi chạy, tăng tốc độ xử lý và phản hồi của website. Opcache thì chỉ cần kích hoạt là chạy, không cần cấu hình gì thêm. Extension này gần như bắt buộc bạn phải kích hoạt khi sử dụng hosting nha, lưu ý.
Lưu ý: Một số nhà cung cấp hosting không đưa ra những lựa chọn extension mặc định khi kích hoạt PHP, bạn cần tick chọn lại để áp dụng.
3.3 Cấu hình lại tham số PHP
Ngoài việc thay đổi phiên bản PHP mặc định, bạn còn có thể cấu hình lại các thông số của PHP để phù hợp hơn với nhu cầu sử dụng thực tế.
Vẫn trong trang Select PHP Version, bạn hãy nhấn vào link Switch to PHP Options. Những thông số bạn được phép điều chỉnh sẽ xuất hiện:
Ý nghĩa của một số option như sau:
- allow_url_fopen: Cho phép sử dụng hàm fopen.
- date.timezone: Thay đổi múi giờ mặc định trong PHP.
- display_errors: Bật/tắt hiển thị lỗi PHP ra ngoài website.
- error_reporting: Tùy chọn các lỗi PHP được báo cáo.
- file_uploads: Cho phép upload qua PHP.
- include_path: Đường dẫn lưu cấu hình PHP, không nên thay đổi.
- log_errors: Bật tắt file log, nên bật để kiểm tra lỗi (nếu có) khi lên PHP 7.
- mail.force_extra_parameters: Thêm các tham số tùy chỉnh khi gửi mail.
- max_execution_time: Tùy chỉnh thời gian tối đa để thực thi PHP.
- max_input_time: Thời gian tối đa để PHP phân tích dữ liệu nhập vào, -1 là không giới hạn.
- max_input_vars: Giới hạn số lượng tham số truyền vào.
- memory_limit: Bộ nhớ tối đa mà PHP được phép sử dụng.
- open_basedir: Thiết lập đường dẫn thư mục mà PHP được phép thực thi, để trống để sử dụng thiết lập mặc định của máy chủ.
- post_max_size: Thiết lập kích thước dữ liệu tối đa được gởi đi.
- session.save_path: Thiết lập thư mục chứa session trong PHP.
- short_open_tag: Cho phép PHP sử dụng thẻ mở rút gọn <? thay vì <?php.
- upload_max_filesize: thiết lập kích thước tập tin tối đa được phép tải lên máy chủ thông qua PHP.
Sau khi thay đổi, nhấn Save để lưu.
3.4. Kích hoạt Let’s Encrypt
Hầu hết các website trên thế giới đều sử dụng HTTPS thay vì HTTP vì những lợi ích mà HTTPS mang lại. Thật tuyệt vời khi chúng ta có thể sử dụng SSL hoàn toàn miễn phí, kích hoạt trực tiếp ngay trong cPanel với một click chuột từ Let’s Encrypt.
Sau khi kích hoạt Let’s Encrypt, kiểm tra quá trình load site sử dụng Developer Tools, bạn sẽ thấy toàn bộ dữ liệu hình ảnh, file .js, file .css đều đã chuyển sang sử dụng giao thức HTTP 2. Không cần cấu hình gì thêm.
3.5 Tối ưu Browser Caching
Máy chủ Apache và LiteSpeed Webserver đều hỗ trợ file .htaccess, bạn có thể tận dụng để tối ưu Browser Caching, yêu cầu trình duyệt không load lại những file tĩnh, ít thay đổi như JS, CSS, ảnh và các file media khác (pdf, flash,…) mỗi khi có request.
Điều này sẽ cải thiện tốc độ duyệt website từ phía người dùng, server chứa web cũng đỡ phải xử lý nhiều request, tiết kiệm tài nguyên hơn.
Mở file .htaccess
ở thư mục gốc của website, chèn đoạn code sau vào bên dưới:
# Enable expirations ExpiresActive On # Default directive ExpiresDefault "access plus 1 month" # My favicon ExpiresByType image/x-icon "access plus 1 year" # Images ExpiresByType image/gif "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 month" # Javascript ExpiresByType application/javascript "access plus 1 month"
Sau những cách tối ưu trên của mình. Mình thực hiện kiểm tra lại website ban đầu TTFB từ 4s đã giảm xuống con 30.02 ms. Thấp hơn con số 200ms mà Google yêu cầu. Như vậy cho thấy những cách trên thực hiện hiệu quả và mình đã tối ưu cho rất nhiều khách hàng của mình.
III. Tổng kết
Qua bài giảm TTFB trên website WordPress. Hi vọng với bài viết trên sẽ giúp các bạn có thể tối ưu website của mình tốt hơn. Nếu bạn còn những cách khác hay hơn hãy chia sẽ lại cho mình bằng cách comment bên dưới nhé.