Datgs' Blog

Quyết chiến quyết thắng !

Archive for the tag “giảm bớt”

Để tăng tốc độ tải của website

Tham khảo tại http://developer.yahoo.com/performance/rules.html

Thu gọn các HTTP Requests

80% thời gian mà người sử dụng cuối phải dành ra là chờ đợi các kết quả website trả về, chủ yếu là chờ đợi tải các thành phần hình ảnh, javascript, css… Vậy phải làm thế nào để giảm bớt các request này. Có các phương pháp sau:

kết hợp các file dữ liệu giúp giảm các request tới server

sử dụng css để định các ảnh muốn tải về

image maps

inline images

Sử dụng các mạng phân phối nội dung

Là sử dụng các mạng lưu trữ khác để giúp cho việc phân phối nội dụng trở nên nhanh hơn.

Sử dụng điều khiển cache ở header

Expires: Thu, 15 Apr 2010 20:00:00 GMT

Sử dụng thành phần nén nội dung gzip

Accept-Encoding: gzip, deflate

Content-Encoding: gzip

Vị trí đặt các thành phần trong HTML

Đặt các stylesheets ở đầu trang

Đặt các script ở cuối trang

Tránh các biểu thức CSS

Đặt css và javascipt ở bên ngoài  (không nhúng vào html)

Giảm DNS Lookups

Làm nhỏ dung lượng các file css & javascript

Tránh các redirects

Xóa bỏ các đoạn script trùng lặp

Cấu hình ETags

Sử dụng ajax với khả năng cache nội dung

Sớm đẩy nội dung ra khỏi buffer

Sử dụng GET với ajax

Sử dụng thành phần Post-Load

Sử dụng thành phần Preload

Giảm số lượng các  DOM

Tách các thành phần cùng domain

Hạn chế sử dụng iframe

Không xài 404s

Giảm kích thước cookie

Sử dụng các tên miền không cookie (cookie-free)

Giảm truy cập DOM

Phát triển các điều khiển sự kiện khôn khéo hơn

Sử dụng link thay vì @import (css)

Tránh Filter (css)

Tối giản các hình ảnh

Tối ưu hóa css

Không thay đổi khích thước ảnh mà bạn muốn

flavor.ico nhỏ và có khả năng được cache

Giữ các thành phần không quá 25k kích thước

Không show hết nội dung website mà chia thành các phần nhỏ hơn nếu có thể

Loading models cần thiết cho từng action (cakePHP)

http://www.milesj.me/blog/read/16/loading-models-specific-to-certain-actions

Trong cakePHP, một controller có thể điều khiển rất nhiều models, đồng nghĩa với việc thời gian nạp các models đó rất lớn (cakePHP performance tốn nhiều thời gian để nạp các models).

Tuy nhiên các models của một controller lại thường không sử dụng hết trong một actions => Thừa.

Vì vậy, có một giải pháp để “chỉ nạp các models cần thiết trong một action” như sau:

/** * Executed before each action */

function beforeFilter() {

parent::beforeFilter();

// Load action specific models

switch ($this->params['action']) {

case ‘friends’:

$models = array(‘Friend’);

break;

case ‘messages’:

$models = array(‘Message’);

break;

case ‘blog’:

$models = array(‘Entry’, ‘Comment’);

break;

}

if (!empty($models)) {

foreach ($models as $model) {

$this->loadModel($model);

}

}

}

Việc này sẽ tăng performance của cakePHP lên khi controller của bạn sử dụng nhiều models. Cách tổ chức model như CakePHP với nhiều ràng buộc và kiểm tra dữ liệu khiến cho việc xử lý chương trình trở nên nặng nề hơn.

Post Navigation

Follow

Get every new post delivered to your Inbox.