2009-02-21 61 views
15

Tôi đang làm việc trên một trang web dựa trên Drupal và thông báo có rất nhiều tệp CSS và js riêng biệt. Lội lội mặc dù một số mã tôi cũng có thể thấy khá một vài trường hợp mà nhiều truy vấn được sử dụng quá.Chia tỷ lệ Drupal

Bạn đã cố gắng cải thiện hiệu suất của Drupal và mô-đun nào (nếu có) để cải thiện hiệu suất của Drupal 'ra khỏi hộp'?

Trả lời

21

Đi tới trang quản trị/cài đặt/hiệu suất, bật CSS và tập hợp JS và lưu vào bộ nhớ cache với thời lượng tối thiểu là 1 phút, sẽ giúp bạn tăng ngay lập tức trên trang web có lưu lượng truy cập cao. Nếu bạn đang viết mã của riêng mình và thực hiện bất kỳ truy vấn nào, hãy cân nhắc viết riêng caching for expensive functions rời rạc của riêng bạn. Bài viết liên kết bao gồm Drupal 5, chứ không phải 6, nhưng thay đổi duy nhất trong d6 là loại bỏ yêu cầu tuần tự hóa và chữ ký hàm cho các hàm cache_set() và cache_get(). (Cả lưu ý trong bài viết)

Trên các trang web có quy mô lớn cũng xem xét việc bỏ một máy chủ ghi nhớ vào mạng: Sử dụng mô-đun memcached, bạn hoàn toàn có thể bỏ qua cơ sở dữ liệu drupal cho dữ liệu được lưu trong bộ nhớ cache. Nếu bạn có một lượng lớn nội dung và tìm kiếm là một điểm nóng, bạn cũng có thể xem xét sử dụng lucene/solr làm công cụ tìm kiếm của bạn thay vì chỉ mục tìm kiếm được tích hợp sẵn của drupal. Thật tuyệt vời cho một trình lập chỉ mục tích hợp nhưng nó không được thiết kế cho các tải nặng (hàng trăm hoặc hàng ngàn mẩu nội dung mới một giờ, nói, với việc tìm kiếm nhiều mặt). Mô-đun apache solr có thể gắn liền với điều đó.

Nếu bạn đang sử dụng nhiều Chế độ xem, hãy đảm bảo rằng bạn đã kiểm tra các truy vấn mà nó tạo cho các trường chưa được lập chỉ mục; phân loại và lọc theo các lĩnh vực CCK nói riêng có thể chậm, bởi vì CCK không tự động thêm các chỉ mục ngoài các khóa chính. Trong D6, xem trước các Xem trong màn hình quản trị, sao chép văn bản của truy vấn, và chạy nó thông qua GIẢI THÍCH trong mysql hoặc bất cứ công cụ phân tích truy vấn bạn có.

Các công cụ như YSlow và Firebug cũng có thể giúp bạn phát hiện các nội dung chậm như tệp hình ảnh lớn, JS được lưu trữ trên máy chủ từ xa, v.v.

+1

Tôi cũng sẽ thêm một chút về cách thiết lập Chặn bộ đệm - cho phép bạn lưu trữ nội dung ngay cả đối với người dùng đã đăng ký, vì bộ nhớ đệm trang chỉ ảnh hưởng đến những người ẩn danh. –

5

Drupal 6, out-of-the-box, cung cấp tập hợp css và javascript --- hầu hết các tệp css và js sẽ được kết hợp thành một tệp duy nhất (và do đó yêu cầu HTTP đơn) và cũng được rút ngắn khoảng trắng (để giảm mức tiêu thụ băng thông). Bạn có thể bật tính năng này trong/admin/settings/performance.

Cũng trên màn hình đó là các điều khiển cho bộ nhớ cache (rất hiệu quả) của Drupal, giúp giảm số truy vấn cơ sở dữ liệu. Ngoài ra, bởi vì Drupal (và tất cả các mô-đun bạn có thể đã cài đặt) có rất nhiều nguồn PHP, sử dụng bộ nhớ cache mã hóa PHP như APC giúp giảm đáng kể thời gian yêu cầu.

0

Tôi mạnh mẽ thứ hai Benedict đề xuất của mô-đun Boost - nó sẽ làm cho trang web của bạn bay trên lưu trữ được chia sẻ, nếu cấu hình chính xác, và không thực sự lỗi ở tất cả.

Bật tập hợp CSS/JS, bật Tăng cường và trang web của bạn có thể hoạt động rất tốt cho người dùng ẩn danh.

Nếu trang web của bạn giao dịch với hầu hết người dùng đã đăng nhập, bạn sẽ phải thực hiện nhiều công việc hơn để đảm bảo các phiên được lưu trong bộ nhớ cache tốt và có thể xem xét sử dụng bộ nhớ cache truy vấn memcached và SQL.

Lợi ích hiệu suất lớn nhất luôn đến từ bộ nhớ đệm — nhưng giám sát và điều chỉnh truy vấn chậm, giám sát và điều chỉnh cấu hình apache và PHP và thông minh về các mô-đun bạn sử dụng cũng rất quan trọng.

+0

Tôi đang làm việc trên một Báo cáo Hiệu suất Drupal về các loại trên trang web của mình - chỉ cung cấp bức tường này là một ý tưởng tốt để cải thiện hiệu suất trang web trên toàn bộ diễn đàn: http://www.lifeisaprayer.com/articles/web-design/2010/drupal-hiệu suất-trắng-giấy – geerlingguy

0

Khác với bộ nhớ cache mặc định của drupal, có một số phương pháp khác để tăng hiệu suất

Mô-đun tăng là một trong những điều tốt nhất. memcache, Varnish (Drupal 7/Pressflow), CDN là một phương pháp khác có thể cải thiện hiệu suất

0

Nó cũng đáng nhắc đến việc tăng hiệu suất từ ​​việc sử dụng bộ nhớ SSD chất lượng. Nó đã liên tục giảm thời gian tải phản hồi ban đầu của tôi xuống 30% hoặc hơn khi di chuyển sang SSD (tôi đã đi từ khoảng ~ 450ms đến ~ 250ms trên dự án cuối cùng của tôi, sử dụng cấu hình Apache/Memcache/Cloudfront EC2 giống hệt nhau), chưa kể nó là để quản lý một máy chủ snappy, nơi tất cả các lệnh hoặc kịch bản bạn ném vào nó là gần như tức thời. Tôi sẽ không bao giờ quay trở lại.

Các vấn đề liên quan