Làm thế nào để cải thiện thời gian phản hồi của máy chủ?


17

Tôi có thể làm gì, ngoài việc sử dụng plugin bộ đệm như jotcache, để cải thiện thời gian phản hồi của máy chủ trên trang web của tôi?

Tôi đã loại bỏ tất cả các mô-đun, plugin và thành phần bài viết không hoạt động, tôi có thể làm gì khác để cải thiện nó không?

Tôi đang nói về thời gian trước khi khách hàng (trình duyệt) nhận được phản hồi cho yêu cầu của anh ta . Và không phải là thời gian trang tải.


Thời gian trả lời là thời gian trước khi tài liệu php kết thúc, vì vậy bạn muốn xem các cuộc gọi sql và php và sau đó lưu các câu hỏi html mà tôi đề xuất
tristanbailey

Khi bạn nói thời gian phản hồi của máy chủ - bạn có nghĩa là phản hồi từ máy chủ khi yêu cầu được thực hiện lần đầu tiên hay bạn có nghĩa là thời gian máy chủ phải chuẩn bị và phục vụ trang? Chạy trang web của bạn thông qua bài kiểm tra tốc độ Pingdom và đăng kết quả sau đó chúng tôi có thể cung cấp cho bạn các giải pháp cụ thể cho vấn đề thực tế.
Brent Friar

Câu trả lời:


25

Có một số bước bạn có thể thực hiện để tăng hiệu suất phía máy chủ. Xin lưu ý rằng một số trong số này sẽ không hoạt động với hầu hết các máy chủ được chia sẻ. Để có hiệu suất tuyệt vời, bạn thường cần kiểm soát chi tiết hơn.

Như với bất kỳ tối ưu hóa nào, bạn nên đo lường hiệu quả của nó đối với hiệu suất trang web của bạn. Để tối ưu hóa cơ bản là các công cụ như PageSpeedYSlow hữu ích (tôi khuyên dùng các phiên bản Firefox). Để hiểu sâu hơn, bạn sẽ phải đo thời gian phản hồi thực tế của hệ thống trực tiếp của mình trong một khoảng thời gian.

PHP

  1. Kích hoạt bộ đệm Opcode

    Đây có lẽ là điều lớn nhất bạn có thể làm để tăng hiệu suất trang web của mình. Tôi khuyên bạn nên sử dụng OpCache hoặc APC . Cấu hình của các bộ đệm này có thể được điều chỉnh để có hiệu năng cao hơn dựa trên nhu cầu cụ thể của máy chủ và trang web, nhưng chỉ cần cài đặt đã là một sự thúc đẩy lớn.

  2. Cập nhật phiên bản PHP

    Phiên bản PHP mới hơn thường xuyên đi kèm với cải tiến hiệu suất. Ngoài ra, có một số trường hợp Joomla có thể sử dụng mã tốt hơn khi chạy trên phiên bản PHP mới hơn. Kể từ hôm nay, bạn không nên sử dụng phiên bản PHP cũ hơn PHP 5.4 nếu bạn quan tâm đến hiệu suất.

  3. Cài đặt PHP

    Trên các phiên bản PHP cũ hơn (<= 5.3), hãy cẩn thận để tắt register_globalsmagic_quotes_gpcgiành chiến thắng hiệu suất miễn phí. Trên PHP> = 5.6 thay đổi always_populate_raw_post_datathành -1.

  4. Phần mở rộng PHP

    Joomla chứa một số mã để giải quyết các phần mở rộng PHP bị thiếu. Điều này sẽ luôn chậm hơn các phần mở rộng. Đối với một sự cải thiện hiệu suất khá cài đặt phần mở rộng sau: mbstring, zip,ftp

Máy chủ web

  1. Kích hoạt gzip

    Cho phép nén phía máy chủ giao dịch băng thông cho tài nguyên CPU. Đối với hầu hết các trang web ngoài đó đây là cuộc gọi đúng. Hãy cẩn thận để chỉ nén dữ liệu văn bản, nén dữ liệu nhị phân sẽ cung cấp cho bạn cú đánh CPU mà không có lợi thế về băng thông. Bạn cũng có thể kích hoạt tính năng nén trong cài đặt Joomla nhưng sẽ tốt hơn nếu bạn để máy chủ xử lý việc này.

  2. Giải nén tài nguyên tĩnh

    Tôi không nói về minfication (mặc dù điều này cũng có ích) nhưng bạn có thể định cấu hình Nginx và Apache cho máy chủ đã nén tài nguyên, loại bỏ hiệu quả CPU bị tấn công khi nén gzip. Điểm thưởng: Sử dụng Zopfli cho các tệp nhỏ hơn.

  3. Sử dụng FastCGI cho PHP

    Cụ thể hơn bạn nên sử dụng php-fpm. Điều này ngăn khởi động PHP khi trình duyệt yêu cầu tệp không phải PHP.

  4. Sử dụng các tiêu đề bộ đệm phù hợp

    Sử dụng Expirestiêu đề có thể làm giảm đáng kể các tài nguyên máy chủ cần thiết. Sau khi tất cả các yêu cầu nhanh nhất là một yêu cầu không bao giờ được thực hiện.

Apache

Nói chung, tôi khuyên bạn nên sử dụng Nginx cho các trang web hiệu suất cao. Nếu bạn thực sự cần sử dụng Apache vì một số lý do tôi đã nhận được một mẹo tiền thưởng:

  1. Vô hiệu hóa AllowOverride

    Cài đặt AllowOverrideđể Nonengăn chặn nhiều đĩa IO và

Joomla

  1. Không sử dụng Chế độ FTP

    Mặc dù nó không ảnh hưởng đến người dùng của bạn khi đọc trang web, nhưng nó sẽ làm chậm một số thao tác như cài đặt tiện ích mở rộng.

  2. Tắt các tiện ích mở rộng không sử dụng

    Điều này đặc biệt dành cho Plugins, nhiều trong số này được chạy theo mọi yêu cầu. Vô hiệu hóa các menu và thành phần chủ yếu hữu ích khi liệt kê các phần mở rộng và loại menu có sẵn. Ngoài ra, hãy dành 5 phút để đi qua các tiện ích mở rộng đi kèm với lõi Joomla và vô hiệu hóa những tiện ích bạn không sử dụng.

  3. Tắt chuẩn bị nội dung

    Nếu bạn sử dụng nhiều mô-đun tùy chỉnh ( mod_customkhông phải tùy chỉnh như tự viết), hãy kiểm tra xem bạn có thể tắt Chuẩn bị nội dung trong đó không. Điều này tiết kiệm một số xử lý.

  4. Sử dụng bộ nhớ đệm

    Nếu bạn nghiêm túc về hiệu suất, bạn sẽ muốn bật bộ đệm. Đặc biệt hữu ích để đọc các trang web nặng với nhiều người dùng ẩn danh. Người dùng đã đăng nhập sẽ bỏ qua hầu hết bộ nhớ cache, nếu bạn có nhiều trong số này thì hiệu quả sẽ không lớn.

  5. Sử dụng một trình xử lý phiên thay thế

    Bằng cách sử dụng trình xử lý phiên thay thế, bạn có thể giải phóng cơ sở dữ liệu của mình cho những điều quan trọng hơn. Tôi không khuyến nghị tệp (được gọi một cách khó hiểu là Không có trong cài đặt Joomla) vì điều đó sẽ mang lại một lần nữa tăng IO đĩa. Sử dụng APC có khả năng là fastet nhưng làm tăng nguy cơ mất tất cả dữ liệu phiên. Tầng giữa bên phải là Memcache. Mặc dù điều này đòi hỏi một quy trình bổ sung, nhưng nó đáng tin cậy hơn APC và nhanh hơn nhiều so với việc lưu trữ tất cả dữ liệu trong cơ sở dữ liệu

  6. Giữ cho trang web của bạn đơn giản

    Bạn có thực sự cần nút Facebook đó không? Điều gì về biểu tượng dễ thương mà không ai từng thấy bởi vì nó một phần ẩn đằng sau một số biểu ngữ? Trang web của bạn càng ít hiển thị thì nó sẽ càng nhanh. Ngoài ra bất cứ nơi nào có thể sử dụng CSS3 thay vì hình ảnh.

Điều khoản khác

  1. Đặt một hình đại diện

    Nhờ một quyết định có từ trình duyệt Internet Explorer 4.0, hãy yêu cầu một tệp được gọi favicon.icobất cứ khi nào người dùng truy cập trang web của bạn. Nếu bạn không có điều này gây ra IO không cần thiết, vì phản hồi 404 không được lưu trong bộ nhớ cache. Chỉ định biểu tượng trang web của bạn bằng thẻ meta HTML hoặc thêm tệp được gọi favicon.icovào thư mục gốc. Đừng muốn một favicon? Đặt một PNG trong suốt với kích thước 1x1 pixel ở vị trí đó. Lưu ý rằng phần mở rộng vẫn cần phải được .ico.

  2. Tối ưu hóa hình ảnh của bạn

    Thật tuyệt vời khi tiết kiệm loại người ta có thể nhận được bằng cách tối ưu hóa hình ảnh, đặc biệt là các tệp PNG. Có nhiều công cụ có sẵn cho bất kỳ hệ điều hành nào, cá nhân tôi sử dụng ImageOptim có sẵn cho OS X. Hình ảnh cốt lõi của Joomla đã được tối ưu hóa nhưng đi qua hình ảnh của riêng bạn, đặc biệt là các mẫu rất quan trọng. Bạn cũng có thể kiểm tra các tiện ích mở rộng bạn đang sử dụng. Nếu chúng là nguồn mở, tại sao bạn không đóng góp yêu cầu kéo có chứa hình ảnh mới được tối ưu hóa?

Tiên tiến

Nếu bạn thực sự muốn đi ra ngoài, hãy xem xét đặt Varnish trước trang web của bạn. Nó lưu trữ các yêu cầu đến trang web của bạn và nếu có thể phục vụ chúng từ bộ nhớ cache của chính nó, không bao giờ nhấn Joomla. Đó là một công cụ phức tạp nhưng có rất nhiều sức mạnh. Joomla sẽ không tận dụng các chức năng nâng cao như Edge Side Bao gồm (ESI) nhưng mã của riêng bạn thì có thể.


8
Điều đó có vẻ ... khá không thân thiện. Chỉ cần FYI, tôi chỉ viết này, văn bản không có cách nào chuẩn bị. Hãy google nó. Hãy nhớ câu trả lời không chỉ giúp người hỏi ban đầu mà cả những người dùng trong tương lai cũng tìm được đường đến đây.
Rouven Weßling

13

Một điều LỚN bạn có thể làm để cải thiện thời gian phản hồi cho trang web của mình là cập nhật cài đặt mô-đun. Các mô-đun tùy chỉnh (sử dụng mod_custom) có tùy chọn bật / tắt chuẩn bị nội dung. Điều này cho phép bạn chạy các plugin nội dung trên nội dung dữ liệu trong mô-đun tùy chỉnh của bạn. Nó mạnh mẽ khi được sử dụng đúng cách, nhưng nó thêm thời gian kết xuất bổ sung vào đầu ra mô-đun. Trừ khi bạn thực sự sử dụng một plugin nội dung trong nội dung mô-đun tùy chỉnh của mình, tốt nhất là tắt nó đi. Bạn sẽ thấy giảm thời gian kết xuất mô-đun khi bạn làm điều này.

Ảnh chụp màn hình của cài đặt: nhập mô tả hình ảnh ở đây

Lưu ý: Nếu câu trả lời của tôi đã giúp bạn, vui lòng nhấp vào kiểm tra bên trái để chấp nhận câu trả lời.


3
Tôi chưa bao giờ thấy phần nội dung chuẩn bị trước đây. Phiên bản nào của Joomla này áp dụng cho?
TryHarder

1
nếu nó được bật thì plugin có thể chạy trên nội dung. Vì vậy, nếu bạn đặt mã ngắn vị trí mô-đun hoặc mã ngắn plugin khác trong văn bản html tùy chỉnh, các mã này sẽ không hiển thị, bạn sẽ chỉ thấy ví dụ: "{tag_name}" trong trang web không phải là phiên bản đã chuẩn bị
tristanbailey

2
Tùy chọn "Chuẩn bị nội dung" được bao gồm trong Joomla 2.5 và 3.x. Cài đặt mặc định là "Không".
Neil Robertson

8

Tôi giả sử rằng bạn đã chạy trang web của mình thông qua tốc độ Trang của Google và bạn thực sự đang xem xét giảm thời gian phản hồi của trang tức là thời gian đánh dấu của bạn sẽ được gửi đến trình duyệt.

Thủ phạm có khả năng nhất cho những điều này là các truy vấn nặng. Bật gỡ lỗi và nhìn vào cuối trang để tìm ra những truy vấn nặng nhất và loại bỏ hoặc giảm chúng. Bạn cũng có thể nhận trợ giúp về nhật ký truy vấn chậm của máy chủ MySQL của bạn.

Điều tiếp theo mà bạn có thể nhìn vào là bộ nhớ đệm. Tùy thuộc vào loại trang web bạn có, bạn có thể chuyển bộ nhớ đệm bảo thủ hoặc tiến bộ. Tiến bộ sẽ được sử dụng trên các trang web không có và các tính năng liên quan đến người dùng.


Bạn có thể cung cấp bất kỳ lời khuyên hoặc ảnh chụp màn hình về các truy vấn nặng trông như thế nào? Có bất kỳ ngưỡng để đạt được?
David Fritsch

Nó thực sự phụ thuộc vào ứng dụng của bạn. Tuy nhiên, bất kỳ truy vấn nào xuất hiện trong nhật ký truy vấn chậm (trong cài đặt bình thường sẽ ghi lại bất kỳ truy vấn nào mất hơn 1 giây để thực hiện) là một ứng cử viên tốt để chia nhỏ và / hoặc đặt vào bộ đệm. Một điều khác nghe có vẻ ngớ ngẩn, nhưng hãy đảm bảo tất cả các truy vấn đều có GIỚI HẠN.
Ashwin Ngày

6

Những điều tôi biết có thể giúp ích (hầu hết trong số đó đã được liệt kê) là:

  1. Bộ nhớ đệm
  2. Nén (gzip tệp css và js của bạn)
  3. Kết hợp các tệp (tất cả css của bạn được kết hợp thành một tệp)
  4. Giảm tải hình ảnh và tập tin vào CDN.

Tôi đã sử dụng kết hợp bộ đệm Joomla tích hợp (hoặc thậm chí APC được bật trên máy chủ) và các plugin như plugin rockbooster của gzip hoặc chủ đề tên lửa. Tôi cũng sử dụng plugin CDN nonumbers với tài khoản amazon.

Nó chắc chắn có ích, nhưng bạn phải xem trang web của mình và vô hiệu hóa bộ đệm cho các thành phần có vấn đề. Tôi đã phải bỏ qua CiviCRM trên trang web của chúng tôi vì nó không hoạt động tốt với bộ nhớ đệm. Joomla đi kèm với một plugin bộ nhớ cache có thể xử lý việc đó.


2
kết hợp và nén hình ảnh của bạn khi có thể là tốt. Sprites có thể lưu hàng tá yêu cầu cho mỗi lần tải trang.
ContextSwitch

Tôi luôn quên về spites. :)
Brian Peat

lưu ý một điều liên quan đến các họa tiết - hình ảnh nền không được hiển thị khi Windows được chuyển sang chế độ Tương phản cao. Mặc dù hành vi này được chào đón đối với đồ họa chung, nhưng đó là vấn đề đối với các điều khiển phải được nhấp bởi người dùng - chúng chỉ đơn giản biến mất (ví dụ: các nút biểu quyết trên trang web này)
miroxlav

Heh Brian Peat, tôi tự hỏi liệu bạn có thể quan tâm đến việc giúp chúng tôi khởi chạy một trang CiviCRM tại StackExchange không. Chúng tôi đang cần những ủy viên có hơn 200 danh tiếng trên một số trang web StackExchange khác: area51.stackexchange.com/proposeals/77367/civicrm Chúc mừng!
Joe Murray

Tôi sẽ xem qua một chút. Đây là tất cả dựa trên Joomla và tôi đã không làm bất kỳ chương trình nào, nhưng tôi có thể giúp đỡ với các câu hỏi cơ bản.
Brian Peat

4

Bạn cũng sẽ muốn xem xét giảm tài sản cục bộ và bộ nhớ đệm thích hợp. Một điều mà bạn có thể làm là sử dụng các plugin CDN. Đây là hai tôi muốn giới thiệu:

'corePHP' jomCDN - https://www.corephp.com/j Joomla-products / jomcdn

CDN NoNumbers cho Joomla! - http://www.nonumber.nl/extensions/cdnforj Joomla

Ngoài ra nếu không có điều nào ở trên có vẻ giải quyết được các vấn đề bạn có thể gặp vấn đề sâu hơn - có thể trong mẫu của bạn, chính máy chủ hoặc những thứ khác. Nếu đó là trường hợp tốt nhất có thể thuê một người nào đó để tìm ra vấn đề và giải quyết nó cho bạn.


3

Bạn cũng có thể sử dụng mã này trong tệp .htaccess của mình:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<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 text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

Điều này có vẻ thú vị, bạn có thể giải thích những gì nó làm?
web-tiki

@ web-tiki Cài đặt này hết hạn tiêu đề. Các tiêu đề hết hạn cho trình duyệt biết họ có nên yêu cầu một tệp cụ thể từ máy chủ hay liệu họ có nên lấy nó từ bộ đệm của trình duyệt hay không. Toàn bộ ý tưởng đằng sau Expires Headers không chỉ là giảm tải các tải xuống từ máy chủ (liên tục tải xuống cùng một tệp khi nó không được sửa đổi đang lãng phí thời gian tải quý giá) mà còn để giảm số lượng yêu cầu HTTP cho máy chủ. TÀI LIỆU THAM KHẢO gtmetrix.com/add-Exires-headers.html
TryHarder

2

Tôi đã tạo thêm hàng trăm trang web bằng Joomla!

Trong hầu hết các trường hợp, mọi người nghĩ rằng Joomla đang làm việc rất nhiều trên máy chủ, nhưng theo các phân tích do tôi thực hiện, điều quan trọng nhất để giữ cho trang web của bạn NHANH CHÓNG là tối ưu hóa HÌNH ẢNH và JS / CSS.

Đừng sử dụng các trình soạn thảo Joomla, như JCE, để chỉ thay đổi kích thước của hình ảnh. Sử dụng các trình chỉnh sửa hình ảnh như photoshop hoặc bất kỳ trình chỉnh sửa nào khác để thay đổi kích thước hình ảnh của bạn theo kích thước cần thiết!

Sử dụng các công cụ nén JS / CSS.

Chúng tôi luôn sử dụng Công cụ Pingdom để phân tích tốc độ trang web và chúng tôi sử dụng tính năng tích hợp của T3 Framework để tối ưu hóa JS / CSS!


Bạn sử dụng công cụ nào để nén JS / CSS? Bạn có đề xuất nào về cách ai đó có thể phân tích trang web của họ như bạn đã làm cho trang web của mình không?
David Fritsch

Chúng tôi luôn sử dụng Công cụ Pingdom để phân tích tốc độ trang web và chúng tôi sử dụng tính năng tích hợp của T3 Framework để tối ưu hóa JS / CSS!
Gev Balyan

2
Tôi cũng đã sử dụng thành công tối ưu hóa JCH để đạt được rất nhiều nén và thu nhỏ. Một tùy chọn khác là sử dụng mod_pagespeed của Apache, về cơ bản thực hiện hầu hết các đề xuất của Google Pagespeed.
Ashwin ngày

2
Tất cả các công cụ tốt. @GevBalyan, tôi khuyên bạn nên thêm những thứ như thế này vào câu trả lời của bạn bằng các liên kết. Cứu người một số googling! Bạn thậm chí có thể chỉnh sửa câu trả lời này để thêm chúng vào câu hỏi này. :)
David Fritsch

Công cụ nén không lưu cache thực sự có thể làm tăng thời gian phản hồi của máy chủ, vì nó thêm thời gian xử lý vào phản hồi của máy chủ.
Don Gilbert

1

Bạn đã loại bỏ các plugin không sử dụng? Joomla phải tải và xử lý mọi plugin được xuất bản cho các sự kiện được kích hoạt trong một yêu cầu.

Bạn phải hiểu các tiện ích mở rộng bạn đã cài đặt và cách chúng tương tác với Joomla!

Nhiều tiện ích mở rộng cài đặt các plugin quản lý nội dung, hệ thống hoặc hoạt động của người dùng để bắt đầu các chức năng mã. Một số trong số họ có thể là thừa.

Tôi biết rằng k2 cài đặt nhiều plugin đáp ứng các sự kiện liên quan đến ngôn ngữ không tạo ra đầu ra thực sự cho các trang web ngôn ngữ đơn lẻ. Không công bố những plugin đó có thể giảm thời gian xử lý.


Bạn có thể nói thêm về điều này? Bạn có ý nghĩa gì bởi "sự kiện kích hoạt"? Làm thế nào tôi có thể biết những sự kiện được kích hoạt?
David Fritsch

1
Câu hỏi hay. Bạn phải hiểu các tiện ích mở rộng bạn đã cài đặt và cách chúng tương tác với Joomla! Nhiều tiện ích mở rộng cài đặt các plugin quản lý nội dung, hệ thống hoặc hoạt động của người dùng để bắt đầu các chức năng mã. Một số trong số họ có thể là thừa. Tôi biết rằng k2 cài đặt nhiều plugin đáp ứng các sự kiện liên quan đến ngôn ngữ không tạo ra đầu ra thực sự cho các trang web ngôn ngữ đơn lẻ. Không công bố những plugin đó có thể giảm thời gian xử lý. Tương tự như vậy, bản thân K2 đã có thói quen xấu là xây dựng các truy vấn đắt tiền để tạo ra các số liệu đáng ngờ.
Joomsavvy

1
Bạn có thể vui lòng cập nhật câu trả lời của bạn với thông tin trong bình luận của bạn?
Harald Leithner

1

Cải thiện tài nguyên gói máy chủ / web Hosting

Có thể đó không phải là câu trả lời mà OP đang tìm kiếm nhưng đáng nói đến trong trường hợp không rõ ràng với mọi người (và chưa có câu trả lời nào khác đề cập đến vấn đề này): cải thiện tài nguyên máy chủ như bộ nhớ, CPU và tốc độ ổ đĩa.

Nếu bạn đang sử dụng lưu trữ web được chia sẻ, việc nâng cấp từ kế hoạch "kinh tế" lên kế hoạch "kinh doanh" hoặc kế hoạch nâng cao khác có thể cải thiện tài nguyên máy chủ có sẵn cho trang web của bạn và giảm thời gian phản hồi của máy chủ. Chuyển đến một công ty lưu trữ chất lượng tốt hơn (ví dụ với các máy chủ lưu trữ web chia sẻ ít đông đúc hơn) cũng có thể giúp ích.

Một kế hoạch lưu trữ tốt hơn cũng có thể cung cấp cho bạn quyền truy cập vào các cải tiến hiệu suất không được bao gồm trong kế hoạch lưu trữ cơ bản. Ví dụ: gói lưu trữ SiteGround "GrowBig" và "GoGeek" bao gồm bộ đệm động giúp giảm đáng kể thời gian phản hồi của máy chủ. Tùy chọn bộ đệm động không khả dụng trong gói "Khởi động".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.