Một trong những yếu tố quyết định sự thành công hay thất bại của một website đó là thời gian tải trang web xuống máy người dùng đầu cuối (client). Thời gian tải trang web càng lâu càng làm người dùng mất niềm tin hơn với website đó và nhanh chóng rời bỏ. Bạn hãy thử tưởng tượng bạn truy cập 1 website mà sau 5 giây website vẫn chưa tải xong thì bạn sẽ làm gì (?). Với tôi, tôi sẽ đóng trình duyệt lại và lựa chọn một website khác có cùng nội dung :yes: .
Xin giới thiệu với các webmaster một ứng dụng giúp bạn tối ưu hóa frontend website khá hữu hiệu - một addon của Firefox giúp bạn xác định những yếu tố cần chỉnh sửa để tăng tốc độ tải trang của mình: YSlow.
YSlow là một addon khá hữu ích cho webmaster. Nó dựa trên các tiêu chí đánh giá chất lượng của Yahoo! Đây là ứng ụng rất cần thiết cho webmaster và cả các designer nữa :yes: . Sau đây xin điểm qua một số chức năng cơ bản của YSlow và hướng dẫn các bạn tối ưu hóa từng phần.
1. Giao diện addon YSlow giành cho Firefox

Phần Grade ở trên cho biết đánh giá chung về website của bạn đã đạt được mức độ điểm nào so với thang điểm chung. A Grade là điểm cao nhất và sẽ thấp dần.
- Cột trái là những tiêu chí đánh giá và mức độ hoàn thiện của website bạn so với những tiêu chí trên. Điều bạn cần làm là làm thế nào để càng nhiều điểm A càng tốt để nâng thang điểm chung của website.
- Phần nội dung bên phải là diễn giải cho những yếu tố bạn cần chỉnh sửa để đạt được số điểm cao hơn.
2. Tối ưu hóa frontend
Tôi sẽ cùng bạn nghiên cứu từng yếu tố một và tìm cách khắc phục tốt nhất cho từng phần:
Make fewer HTTP requests - Hạn chế các yêu cầu xử lý
80% thời gian mà máy chủ làm việc phần lớn là để xử lý frontend. Trong đó hầu hết là để xử lý các yêu cầu liên quan đến việc download các hình ảnh, flash, stylesheets, scripts... Đây là yếu tố quan trọng nhất ảnh hưởng đến thời gian tải trang. Bạn cần xem xét lại các yếu tố hình ảnh, flash, css... trên website và giảm thiểu chúng ở mức tốt nhất có thể. Một số phương án bạn có thể sử dụng như :
- Kết hợp file:bạn có thể gộp nhiều script lại thành 1 (như với javascript, stylesheet... chẳng hạn). Thay vì cần nhiều HTTP request để gọi từng file, chúng ta chỉ cần gọi 1 lần.[/*:m:zr7nzu6k]
- CSS Sprites: cái này khá hay nhưng hơi khó đối với các bạn không rành CSS :lick: . Nói nôm na, nó là việc bạn sử dụng 1 hình ảnh bao gồm nhiều hình ảnh khác nhau và sử dụng thuộc tính background-image và background-position của CSS để lựa chọn hình ảnh thích hợp (theo vị trí) làm background tại một vị trí. Bạn có thể xem thêm ví dụ tại đây.
- Image maps: kết hợp nhiều hình ảnh lại thành 1 hình.
Về vấn đề này bạn nên kết hợp với designer vì ảnh hưởng khá nhiều đến cấu trúc chung của website.
Use a Content Delivery Network - Phân tán tài nguyên
Nhắc lại một lần nữa là 80-90% thời gian tải trang là để giành cho việc download hình ảnh, flash, stylesheets, scripts... và việc xử lý nhiều reuquest sẽ làm cho máy chủ web của bạn gặp nhiều bất lợi trong việc xử lý nội dung chính. Thay vì để máy chủ đảm đương quá nhiều công việc, chúng ta nên phân tán những luồng xử lý đi những nơi khác để giảm tải cho máy chủ bằng cách thiết lập một hệ thống phân tán tài nguyên. Nói đơn giản là: chứa những tài nguyên khác nhau ở những hosting, máy chủ khác nhau và chuyên biệt cho việc xử lý tài nguyên đó.
Lấy ví dụ Amazon.com: bạn sẽ dễ dàng nhận thấy các hình ảnh của Amazon không bao giờ được đặt trên chính domain amazon.com mà sẽ là các máy chủ khác như :
Hãy làm tương tự nếu bạn có thể :punk:
Add Expires headers
Đơn giản là thêm thời gian cache cho các trang đã tải. Giúp cho lần sau quay lại của người dùng sẽ nhanh hơn. Expires là gì thì chắc mọi người nắm rồi nên thôi tôi không nói nữa nhé.
Đây là đoạn tôi sẽ thêm vào .htaccess của mình:
Code:
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
Còn nếu trong php thì bạn có thể sử dụng cái này:
PHP Code:
<span class="syntaxhtml">
<span class="syntaxdefault"><?php
header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Cache-Control:*no-cache,*must-revalidate"</span><span class="syntaxkeyword">);</span><span class="syntaxdefault">*</span><span class="syntaxcomment">//*HTTP/1.1
</span><span class="syntaxdefault">header</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"Expires:*Sat,*26*Jul*1997*05:00:00*GMT"</span><span class="syntaxkeyword">);</span><span class="syntaxdefault">*</span><span class="syntaxcomment">//*Date*in*the*past
</span><span class="syntaxdefault">?>
</span></span>
Compress components with gzip - Nén dữ liệu trước khi chuyển đi
Phần này đã có bài viết Tăng tốc độ load website bằng cách nén dữ liệu rồi ! Mọi người chịu khó đọc lại nhé.
Ở đây mình bổ sung thêm 1 đoạn code .htaccess
Code:
# Enable gzip (deflate) compression
AddOutputFilterByType DEFLATE text/html text/css application/x-javascript
Dòng đầu là comment thôi :lick: , không có gì hết :lick: . Còn dòng thứ 2 là enable tính năng gzip compression. AddOutputFilterByType là các loại file sẽ được nén lại. Các loại file:
- text/html - đây là định dạng xuất ra trước khi trả về người dùng của webpage rồi. Không có gì bàn cãi.
- text/css - Giành cho các file stylesheet.
- application/x-javascript - Giành cho các ứng dụng javascript các phiên bản.
Put CSS at top - Đặt CSS lên đầu trang
Quá rõ ràng không cần phải hướng dẫn đúng không.
Put JavaScript at bottom - Javaascript đặt cuối trang.
Các master thì không phải nói thêm về cái này. Chỉ giải thích thêm 1 tí cho các newbie thôi :lick: . Điều này là cần thiết vì các Javascript sẽ làm ảnh hưởng không nhỏ đến thời gian tải trang. Đặt javascript bên dưới để javascript load sau cùng và không ảnh hưởng nhiều đến việc hiển thị nội dung (người dùng có thể đọc nội dung trong lúc đợi javascript load).
(Còn tiếp)
Note: bạn nào rãnh thì tiếp 1 tay với nhé :p
Chủ đề có liên quan:
Đánh dấu