Monday, October 27, 2014

12 YÊU CẦU ĐỂ WEBSITE WORDPRESS BẠN TẢI NHANH HƠN

Vấn đề tối ưu website WordPress để truy cập nhanh hơn luôn là vấn đề quan trọng bật nhất cho những ai đang quản trị website, vì website mà vào nhanh thì sẽ không bị mất khách hàng, tăng lượt truy cập quay lại do khách truy cập không phải đợi lâu.
Các bài viết hướng dẫn tăng tốc WordPress mình đã có viết khá nhiều rồi, nhưng qua các bài đó mình nhận thấy nhiều bạn vẫn thắc mắc tại sao website người ta chạy vù vù mà website mình thì lại như rùa bò sau khi tăng tốc. Thật sự mà nói, tốc độ của website không phải cứ tăng tốc là nhanh, hay cứ dùng host xịn là nhanh mà nó còn phụ thuộc vào rất nhiều yếu tố mà ở bài này mình sẽ liệt kê ra để bạn xem mình đã làm hết hay chưa.
Tăng tốc wordpress từ a to z (phần 2)

1. Hạn chế sử dụng plugin

Hạn chế sử dụng plugin không có nghĩa là bạn không sử dụng plugin mà sẽ đi tìm các giải pháp tự code hoặc tự kiếm code. Plugin cũng được viết từ code mà thôi mà có khi code trong plugin còn tối ưu hơn của bạn viết rất nhiều, cho nên cái gì thật sự cần thiết mà có plugin hỗ trợ thì hãy cứ dùng, còn không cần thiết thì không dùng, kể cả dùng code.
Khi có nhiều plugin, đồng nghĩa với việc server của bạn phải làm việc nhiều hơn để xử lý các đoạn code bên trong đó, mỗi plugin khi kích hoạt lên cũng sẽ lưu lại một dữ liệu nhỏ trong database nên nếu bạn thử quá nhiều plugin thì sẽ khiến table wp_options sẽ phình to ra hơn, lúc đó server lại mất tài nguyên và thời gian để “listing” dữ liệu trong database trước khi lấy dữ liệu tương ứng với truy vấn gửi đến.

2. Sử dụng theme đơn giản

Một theme đẹp không có nghĩa là nó sẽ có lợi cho bạn, thực tế đã chỉ ra rằng theme càng đẹp, càng có nhiều tính năng thì nguy cơ làm ảnh hưởng đến tốc độ của website càng lớn.
Hãy thử tưởng tượng một theme dạng tin tức, nó sẽ có chức năng hiển thị các bài theo chuyên mục và nó sẽ hiển thị ở nhiều chuyên mục khác nhau. Điều này có nghĩa là nó sẽ sản sinh ra rất nhiều truy vấn từ khách truy cập gửi đến máy chủ, sẽ làm cho máy chủ bạn tốn nhiều tài nguyên hơn và nặng hơn là tràn bộ nhớ.
editor-themefree
Thứ hai, là các theme bóng bẩy luôn chứa rất nhiều CSS và Javascript để tạo ra các hiệu ứng, mà CSS và Javascript lại là một trong các nguyên nhân làm website bạn tải lâu hơn.
Do đó, theo lời khuyên của mình thì bạn nên sử dụng theme có cấu trúc càng đơn giản càng tốt nếu có thể, trường hợp bạn cần một theme rườm rà thì hãy chọn đúng các theme ở các nhà cung cấp uy tín vì không phải theme nào trả phí là nó đều chạy tốt, rất nhiều theme trả phí nhưng vẫn chứa nhiều bug, lúc này server lại càng có thêm việc để làm là ghi log lỗi có trong website.

3. Sử dụng cache là điều bắt buộc

Dù bạn sử dụng host khủng hay host cùi thì việc sử dụng một plugin hỗ trợ cache luôn là điều tối thiểu phải làm nếu như không muốn sống trong cảnh đợi chờ là hạnh phúc.
Sử dụng cache là một hình thức lưu dữ liệu đã qua xử lý vào một nơi nào đó (trên ổ cứng hoặc trên RAM) mà những người dùng tiếp theo sẽ không cần phải gửi truy vấn để lấy dữ liệu nữa mà sẽ đọc trực tiếp dữ liệu đó, như vậy sẽ giảm gánh nặng đáng kể cho server và thời gian tải trang.
Cache thì có rất nhiều loại, nếu bạn chỉ dùng Shared Host bình thường thì có thể sử dụng plugin WP Super Cache rất tốt, dễ cài đặt và tương thích hầu hết trên mọi nền tảng.
Nếu bạn muốn sử dụng cùng lúc nhiều loại cache hơn (như Disk, Browse Cache, Opcode Cache, Object Cache,..) thì có thể sử dụng plugin W3 Total Cache nhưng sẽ cần bạn biết cách cấu hình nó một chút, và chỉ nên sử dụng nó trên VPS hoặc Server riêng.
Còn nếu bạn chưa có bất cứ plugin cache nào, thì hãy cài ngay 1 cái, WP Super Cache là lựa chọn tốt để bạn bắt đầu.

4. Sử dụng host có máy chủ ở gần bạn

dedicated-server
Chẳng hạn nếu bạn có nhiều khách truy cập đến từ Việt Nam thì lựa chọn tốt nhất là hãy sử dụng các server ở gần bạn nhất như Singapore, Malaysia, Hongkong hoặc Việt Nam (mình không khuyến khích bạn dùng host Việt Nam, thẳng thắn là như thế).
Bởi lẽ dù host bạn có mạnh đến đâu đi chăng nữa, nhưng nếu nó lại ở quá xa thì tốc độ sẽ phần nào giảm đi ít nhiều. Tuy nhiên hiện tại việc sử dụng các host nước ngoài như ở Mỹ chẳng còn là vấn đề quá to tát vì bây giờ cơ sở hạ tầng mạng đã tốt hơn xưa, thời gian tải cũng không kém là bao nếu như bạn sử dụng các host ở Mỹ có chất lượng tốt, băng thông rộng.

5. Hãy sử dụng server riêng nếu có thể (VPS/Dedicated Server)

Nếu như website bạn đã có trên 5000 Unique Visitor mỗi ngày thì tốt nhất hãy nâng cấp lên sử dụng VPS có ít nhất 1GB RAM và 1 CPU nếu không muốn nhà cung cấp có thể đơn phương khóa dịch vụ của bạn bất cứ lúc nào vì tốn tài nguyên.
Hiện nay VPS cũng rất rẻ rồi vì xuất hiện công nghệ Cloud VPS, bạn có thể mua thuê 1 VPS tại Singapore chỉ với $10/tháng cho 1GB RAM/1CPU tại DigitalOcean, hoặc Linode cũng là một lựa chọn Cloud VPS rất tốt.
Còn nếu bạn đang lo lắng về cách sử dụng và quản trị VPS thì lại càng không đáng lo hơn vì mình đã có serie Hướng dẫn VPS căn bản đã và đang khóa hoàn chỉnh nên bạn có thể tham khảo.

6. Sử dụng CDN

amazon-cdn
Mô hình hoạt động của CDN
CDN (Content Devilery Network) là một công nghệ truyền tải các dữ liệu tĩnh (hình ảnh, file CSS và Javascript,..) thông qua proxy của các máy chủ CDN, nó sẽ tự nhận diện địa chỉ của người dùng và sẽ điều hướng họ qua proxy ở server gần nhất mà nó có hỗ trợ. CDN cực kỳ hữu dụng nếu bạn sử dụng các host nước ngoài và có lượng lớn hình ảnh trên website.
Các dịch vụ CDN miễn phí thì có CloudFlare là khá tốt, nó cũng bao gồm luôn việc lưu cache các file tĩnh để tăng tốc. Còn trả phí mà bạn có thể sử dụng thì có dịch vụ CloudFront của Amazon đang rất hot hiện nay.

7. Tối ưu hình ảnh

Hình ảnh là nguyên nhân chính dẫn tới website load lâu hơn và tốn băng thông nhiều hơn vì dung lượng các tấm ảnh loại lớn không hề nhỏ, nếu website bạn đăng các ảnh với chất lượng cao như wallpaper máy tính, ảnh photographer thì lại càng nặng hơn.
Khi upload lên môi trường web, bạn thật sự không cần bức ảnh to và chất lượng như vậy, mà hãy nên thu nhỏ lại với kích thước lớn nhất là 800×600 và sử dụng các phần mềm nén ảnh xử lý trước khi upload. Nếu bạn cần khách có thể xem ảnh chất lượng cao thì có thể gói zip lại và upload lên dạng file, họ có thể tải về để xem ảnh chất lượng cao.
Nếu bạn không thể sử dụng phần mềm nén ảnh thì có thể dùng plugin WP Smush.it hoặc EWWW để nó tự giảm chất lượng hình ảnh mỗi khi upload lên máy chủ.
Xem thêm:
Một thủ thuật khác để tăng tốc độ tải cho những website sử dụng ảnh là sử dụng kỹ thuật tải không đồng bộ lên nó, bạn có thể sử dụng các plugin như BJ LazyLoadAdvanced LazyLoad để cấu hình website sẽ chỉ tải hình ảnh nếu người dùng xem tới vị trí của nó, còn không nó sẽ không tải.

8. Tối ưu database

Nếu website bạn đã có nhiều bài viết, dung lượng database đạt mức trên 100MB thì việc cấp bách bạn cần làm là nên tối ưu lại database để server có thể xử lý tốt hơn khi có truy vấn gửi vào.
Trước hết, hãy chắc chắn rằng database của bạn luôn được làm tươi vì nó cũng giống như ổ cứng vậy, sau khi thực hiện việc đọc/ghi dữ liệu quá nhiều nó cũng sẽ bị hiện tượng phân mảnh và chứa các dữ liệu rác (như log chẳng hạn) lưu trong đó, đó là chưa kể đến các dữ liệu không cần thiết như các transient, comment spam, bản nháp tự lưu, revisions,… Bạn có thể dễ dàng tối ưu database qua plugin tên là WP Optimize.
Còn nếu website bạn có mức độ lớn hơn, bạn có điều kiện hơn thì hãy sử dụng một máy chủ riêng để lưu trữ và xử lý database (Remote MySQL Server) vì việc xử lý database khá tốn tài nguyên nên nó sẽ làm ảnh hưởng đến việc xử lý các file PHP của server. Chỉ đơn giản là tìm một cái host khác và bỏ database vào đó rồi sửa phần hostname trong file wp-config.php thành địa chỉ của máy chủ đó. Hoặc bạn cũng có thể dùng các dịch vụ chuyên dụng hơn như Amazon RDSGoogle Cloud Database.

9. Hạn chế kết nối với tài nguyên bên ngoài

Tài nguyên bên ngoài ở đây nghĩa là các dịch vụ có trỏ liên kết ra bên ngoài và khi vào website bạn phải tải nó, ví dụ như các mã nhúng Google Analytics, Google+, Facebook,…
Tốt nhất bạn chỉ nên chèn các dịch vụ thật sự cần thiết như Google Analytics, Google+, Facebook,..còn cái nào bạn có thể hạn chế được thì hạn chế vì không phải lúc nào các script đó cũng load tốt, đôi khi có thể do vài lý do nào đó mà khách sẽ không load nổi các đường dẫn trong script đó trong khi vào website bạn thì rất tốt.

10. Gzip và Cache cho trình duyệt

Gzip là một phương thức nén các dữ liệu nhận được từ máy chủ lại thành một gói dữ liệu nhỏ và gửi nó đến trình duyệt. Vì bản năng trình duyệt cũng là một phước thức tải file từ các website về dữ liệu cache của nó nên sẽ vô cùng mất thời gian nếu website bạn không sử dụng gzip. Sử dụng gzip có thể giúp website bạn được nén lại tới mức nhẹ tối đa nên khách truy cập sẽ tốn ít thời gian tải hơn.
Để kích hoạt gzip bạn có thể chèn đoạn sau vào file .htaccess (nếu sử dụng Shared Host/Apache):
01
02
03
04
05
06
07
08
09
10
11
# Start gzip compression
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# End Gzip compression
Còn bạn dùng NGINX thì hãy chắc chắn file nginx.conf của bạn có các dòng này:
01
02
03
04
05
06
07
# Start Gzip compression
gzip on;
gzip_min_length  1100;
gzip_buffers  4 32k;
gzip_types    text/plain application/x-javascript text/xml text/css;
gzip_vary on;
# End Gzip Compression
Kết quả kiểm tra tại trang http://checkgzipcompression.com/ có thể cho bạn thấy website của bạn đã bật gzip chưa và đã được nén xuống còn bao nhiêu.
gzip-check
Kiểm tra website đã bật gzip hay chưa
Còn Cache cho trình duyệt (Browser Cache) là một cách để chỉnh sửa thời gian lưu bộ nhớ đệm của các file tĩnh như hình ảnh lâu lưu trữ lâu hơn ở trình duyệt trên máy tính, vì khi trình duyệt đã có cache các file đó rồi thì các lần load sau nó không phải mất công tải dữ liệu về nữa nên bạn sẽ truy cập được nhanh hơn.
Để thiết lập cache trình duyệt, bạn có thể chèn đoạn dưới vào file .htaccess (Apache):
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
# Browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
# End Browser caching
Hoặc cho NGINX:
01
02
03
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
   expires max;
}

11. Sử dụng Host có ổ cứng SSD

Trong khi các file PHP sẽ gửi các truy vấn tới máy chủ để xử lý thì các file tĩnh được lưu trên server đều sẽ được webserver trực tiếp gửi nó đến trình duyệt qua thao tác ghi và chép. Dĩ nhiên nếu host bạn có một ổ cứng tốt, thì thời gian truy xuất các file tĩnh sẽ nhanh hơn rất nhiều so với các loại ổ cứng thông thường.
Vì lẽ đó, mình khuyên các bạn nên sử dụng một host hỗ trợ ổ cứng SSD nếu có thể, một số nhà cung cấp rất tốt có hỗ trợ ổ cứng SSD như:

12. Phân tích tốc độ tải của website

gtmetrix
Ở trên đều là những yêu cầu chung, nhưng mỗi website sẽ có cấu trúc khác nhau nên việc bạn cần nên làm là thường xuyên kiểm tra tốc độ website, để biết được trên website của bạn có file nào tải lâu, file nào dung lượng lớn để bạn có hướng tối ưu thích hợp.

Lời kết

Đó là 12 yêu cầu rất cơ bản và đơn giản mà bạn có thể tự làm được để có một website WordPress tải nhanh hơn. Như vậy bạn có thể thấy, việc tối ưu tốc độ của một website là gian nan như thế nào nên hãy tự thưởng cho bản thân mình nếu bạn đã có thể làm website bạn tải tốt hơn.
Một lý do rất quan trọng nữa để bạn phải tối ưu tốc độ website là nó có thể ảnh hưởng đến việc đánh giá thứ hạng của Google cũng như tỷ lệ khách mua hàng nếu như đó là website bán hàng, vì khách hàng luôn rất lười và họ thường không đủ kiên nhẫn để đợi.

0 nhận xét:

Post a Comment