Як поліпшити час відгуку сервера?


17

Що я можу зробити, крім використання плагіну кешу, як jotcache, для покращення часу відгуку сервера мого веб-сайту?

Я вже видалив усі неактивні модулі статей, плагіни та компоненти, чи є ще щось, що я можу зробити, щоб покращити його?

Я кажу про час, перш ніж клієнт (браузер) отримає відповідь на свій запит . І не час завантаження сторінки.


Час відповіді - це час до завершення документа PHP, тому ви хочете переглянути sql та php-дзвінки, а потім кешувати html-питання, які я пропоную
tristanbailey

Коли ви кажете час відповіді сервера - ви маєте на увазі відповідь від сервера, коли запит вперше зроблений, чи ви маєте на увазі час, який потрібен серверу для підготовки та обслуговування сторінки? Запустіть свій сайт через тест швидкості Pingdom та опублікуйте результати, тоді ми зможемо дати вам конкретні рішення реальної проблеми.
Петр Брент,

Відповіді:


25

Ви можете зробити кілька кроків для підвищення продуктивності сервера. Зауважте, що деякі з них не працюватимуть з більшістю хостів, що надаються спільним доступом. Для високої продуктивності зазвичай потрібен більш тонкий зернистий контроль.

Як і у випадку будь-яких оптимізацій, ви повинні виміряти вплив, який він має на ефективність вашого сайту. Для основних оптимізацій корисні такі інструменти, як PageSpeed і YSlow (я рекомендую версії Firefox). Для більш поглибленого розуміння вам доведеться вимірювати фактичний час відгуку вашої живої системи протягом певного періоду часу.

PHP

  1. Увімкнути кешування Opcode

    Це, мабуть, найбільше, що ви можете зробити для підвищення продуктивності вашого сайту. Я рекомендую або використовувати OpCache, або APC . Конфігурація цих кешів може бути налаштована для ще більшої продуктивності на основі потреб серверів та сайтів, але просто встановлення вже є величезним стимулом.

  2. Оновіть версію PHP

    Новіша версія PHP регулярно постачається з поліпшенням продуктивності. Крім того, є ряд випадків, коли Joomla може використовувати кращий код під час роботи на більш новій версії PHP. На сьогоднішній день вам не слід використовувати PHP-версію, старшу за PHP 5.4, якщо ви дбаєте про продуктивність.

  3. Налаштування PHP

    У старих версіях PHP (<= 5.3) слід подбати про вимкнення register_globalsта magic_quotes_gpcвиграш у вільній продуктивності. На PHP> = 5.6 змініть always_populate_raw_post_dataна -1.

  4. Розширення PHP

    Joomla містить деякий код для вирішення відсутніх розширень PHP. Це завжди буде повільніше, ніж ці розширення. Для гідного підвищення продуктивності встановіть наступні розширення: mbstring, zip,ftp

Веб-сервер

  1. Увімкнути gzip

    Увімкнення пропускної здатності компресії на стороні сервера для ресурсів процесора. Для більшості сайтів там це правильний дзвінок. Будьте обережні лише для стиснення текстових даних, стискання двійкових даних призведе до отримання CPU без переваг пропускної здатності. Ви також можете ввімкнути стиснення в налаштуваннях Joomla, але краще, якщо ви дозволите серверу цим займатися.

  2. Попередньо стисніть статичні ресурси

    Я не кажу про мінімізацію (хоча це теж допомагає), але ви можете налаштувати Nginx та Apache на сервер вже стислих ресурсів, ефективно виключаючи хіт CPU від стиснення gzip. Бонусні бали: використовуйте Zopfli для ще менших файлів.

  3. Використовуйте FastCGI для PHP

    Більш конкретно, ви повинні використовувати php-fpm. Це запобігає запуску PHP, коли браузер вимагає не PHP-файлу.

  4. Використовуйте відповідні заголовки кешу

    Використання Expiresзаголовка може значно зменшити необхідні ресурси сервера. Адже найшвидший запит - це той, хто ніколи не робився.

Апач

Як правило, я б рекомендував використовувати Nginx для високопродуктивних сайтів. Якщо вам абсолютно потрібно використовувати Apache з якихось причин, я отримав бонусну пораду:

  1. Вимкнути AllowOverride

    Установка AllowOverrideдля Noneзапобігає багато дискового введення - виведення і

Joomla

  1. Не використовуйте режим FTP

    Хоча це не впливає на ваші користувачі, які читають сайт, це сповільнить деякі операції, наприклад встановлення розширень.

  2. Вимкніть невикористані розширення

    Особливо це стосується плагінів, багато з яких виконуються на кожен запит. Вимкнення меню та компонентів в основному корисно при переліку доступних розширень та типів меню. Також знадобиться 5 хвилин, щоб пройти через розширення, що поставляються з ядром Joomla, і вимкнути ті, якими ви не користуєтесь.

  3. Вимкнути Підготувати вміст

    Якщо ви використовуєте безліч спеціальних модулів ( mod_customне на замовлення, як написано самостійно), перевірте, чи можна вимкнути Підготувати вміст у них. Це економить деяку обробку.

  4. Використовуйте кешування

    Якщо ви серйозно ставитесь до продуктивності, вам потрібно включити кешування. Особливо корисно для читання важких сайтів з багатьма анонімними користувачами. Користувачі, які зареєструвались, обійдуть більшу частину кешу, якщо їх багато, ефект не буде настільки великим.

  5. Використовуйте альтернативний обробник сеансу

    Використовуючи альтернативний обробник сеансу, ви можете звільнити вашу базу даних для більш важливих речей. Я б не рекомендував файл (заплутано називається None в налаштуваннях Joomla), оскільки це ще раз збільшить IO диска. Використання APC потенційно є найшвидшим, але збільшує ризик втратити всі дані сеансу. Правий середній край - Мемкаш. Хоча для цього потрібен додатковий процес, він надійніший за APC і набагато швидше, ніж зберігання всіх даних у базі даних

  6. Зробіть свій сайт простим

    Вам справді потрібна ця кнопка Facebook? Що з тією милою іконою, яку ніхто ніколи не бачить, бо вона частково прихована за якимсь банером? Чим менше ваш сайт відображається, тим швидше він буде. Також, де це можливо, використовуйте CSS3 замість зображень.

Різне

  1. Встановити фавікон

    Завдяки рішенню, що починається з браузера Internet Explorer 4.0, подають запит на файл, викликаний favicon.icoкожен раз, коли користувач відвідує ваш сайт. Якщо у вас немає такого, це призводить до зайвого вводу-виводу, оскільки 404 відповідей не кешуються. Або вкажіть піктограму вашого веб-сайту мета-тегом HTML або додайте файл, викликаний favicon.icoу веб-корінь. Не хочете фавікон? Помістіть у цьому місці прозорий PNG розміром 1х1 пікселя. Зауважте, що розширення все-таки має бути .ico.

  2. Оптимізуйте свої зображення

    Дивовижно, яку економію можна отримати, оптимізуючи зображення, особливо файли PNG. Існує безліч інструментів, доступних для будь-якої операційної системи, особисто я використовую ImageOptim, який доступний для OS X. Основні зображення Joomla вже оптимізовані, але проходьте ваші власні зображення, особливо важливі шаблони. Ви також можете перевірити розширення, які ви використовуєте. Якщо вони з відкритим кодом, чому б вам не надіслати запит на витяг, що містить нові оптимізовані зображення?

Передовий

Якщо ви дійсно хочете все вийти, подумайте про те, як поставити лак перед своїм сайтом. Він кешує запити на ваш сайт і, якщо можливо, подає їх із власного кешу, ніколи не зачіпаючи Joomla. Це складний інструмент, але з великою потужністю. Joomla не скористається передовими функціональними можливостями, такими як Edge Side Includes (ESI), але ваш власний код міг би.


8
Це здається ... досить недружнім. Просто FYI, я щойно це написав, текст жодним чином не був підготовлений. Не соромтеся гугл. Пам'ятайте, що відповіді повинні допомогти не тільки первинному запитувачу, але й майбутнім користувачам, які також знайдуть свій шлях.
Rouven Weßling

13

Одна велика річ, яку ви можете зробити, щоб покращити час відгуку на вашому сайті - це оновити налаштування модуля. Спеціальні модулі (за допомогою mod_custom) мають можливість вмикати / відключати підготовку вмісту. Це дозволяє запускати плагіни контенту на вміст даних у вашому користувальницькому модулі. Він потужний при правильному використанні, але при цьому додає додатковий час візуалізації до виходу модуля. Якщо ви фактично не використовуєте вміст плагіну у вмісті власного модуля, краще вимкнути це. Коли ви це зробите, ви побачите зменшення часу надання модуля.

Знімок екрана налаштування: введіть тут опис зображення

Примітка. Якщо моя відповідь допомогла вам, натисніть прапорець ліворуч, щоб прийняти відповідь.


3
Я ніколи раніше не бачив розділу підготувати вміст. До якої версії Joomla це стосується?
TryHarder

1
якщо він увімкнено, плагіни можуть працювати на вмісті. Отже, якщо ви помістите позиції модулів короткі коди або інші короткі коди плагінів у користувальницьку html textarea, вони не відображатимуться, ви просто побачите, наприклад, "{tag_name}" на веб-сайті не підготовлену версію
tristanbailey

2
Параметр "Підготувати вміст" включений у Joomla 2.5 та 3.x. За замовчуванням встановлено "Ні".
Ніл Робертсон

8

Я припускаю, що ви запустили свій веб-сайт зі швидкістю сторінки Google, і ви дійсно хочете скоротити час відгуку сторінки, тобто час, який витрачається на вашу розмітку для надсилання до браузера.

Найімовірнішими винуватцями цього є важкі запити. Увімкніть налагодження і подивіться внизу сторінки, щоб з’ясувати, які є найважчі запити, і видаліть або зменшіть їх. Ви також можете скористатися допомогою повільних журналів запитів вашого сервера MySQL.

Наступне, на що можна подивитися, - кешування. Залежно від типу веб-сайту, який ви маєте, ви можете отримати консервативне або прогресивне кешування. Прогресивний слід використовувати на сайтах, які не мають функцій, пов’язаних із користувачем.


Чи можете ви надати якісь поради або знімки екрана, як виглядають важкі запити? Чи є якийсь поріг для досягнення?
Девід Фрітш

Це дійсно залежить від вашої заявки. Однак будь-який запит, який висаджується в журнал повільних запитів (який за нормальних налаштувань записує будь-який запит, який займає більше 1 секунди на виконання), є хорошим кандидатом для розбиття та / або введення в кеш. Ще одна річ, яка може звучати нерозумно, але переконайтеся, що всі запити мають ГРОМУ.
Ешвін Дата

6

Що мені відомо, що може допомогти (більшість з яких було перераховано):

  1. Кешування
  2. Стиснення (gzip ваші файли css та js)
  3. Комбінування файлів (усі ваші CSS об'єднуються в один файл)
  4. Вивантаження зображень та файлів на CDN.

Я використовував комбінацію вбудованого кеша Joomla (або навіть APC, включеного на сервері) та плагінів, таких як плагін rockbooster тему gzip або теми ракети. Я також використовую плагін CDN nonumbers з обліковим записом Amazon.

Це безумовно допомагає, але ви повинні переглянути свій сайт і відключити кеш для компонентів, які мають проблеми. Мені довелося обійти CiviCRM на нашому сайті, тому що він не грає добре з кешуванням. Joomla постачається з плагіном cachecontrol, який може впоратися з цим.


2
комбінувати та стискати свої зображення, коли це можливо, також. Спрайт може зберегти десятки запитів на завантаження сторінки.
ContextSwitch

Я завжди забуваю про спрайтів. :)
Брайан Торф

Пам’ятайте про одне, що стосується спрайтів - фонові зображення не відображаються, коли Windows переходить у режим високої контрастності. Хоча така поведінка вітається для загальної графіки, це проблема для елементів управління, на які повинен натискати користувач - вони просто зникають (наприклад: кнопки голосування на цьому сайті)
miroxlav

Хе Брайан Торф, мені цікаво, чи може вам бути цікаво допомогти нам запустити сайт CiviCRM на StackExchange. Нам потрібні комітери, які мають понад 200 репутацій на якомусь іншому сайті StackExchange : area51.stackexchange.com/proposals/77367/civicrm Ура!
Джо Мюррей

Я погляну. Це все було на основі Joomla, і я не займався жодним програмуванням, але я міг би допомогти з основними питаннями.
Брайан Торф

4

Ви також хочете розглянути питання про зменшення локальних ресурсів та належне кешування. Одне, що ви можете зробити - це використовувати плагіни CDN. Ось два, які я рекомендував би:

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

NoNumbers CDN для Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Крім того, якщо жодне з перерахованого вище не вирішує проблеми, можливо, у вас виникне більш глибока проблема - можливо, всередині вашого шаблону, самого сервера чи інших речей. Якщо це так, можливо, найкраще буде найняти когось, щоб розшукати проблему та вирішити її за вас.


3

Ви також можете використовувати цей код у вашому .htaccess файлі:

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>

це здається цікавим, ви можете пояснити, що це робить?
web-tiki

@ web-tiki У цього параметра термін дії закінчується. Заголовки, що втрачає чинність, повідомляють веб-переглядачу, чи потрібно запитувати певний файл із сервера, чи потрібно захопити його з кешу браузера. Вся ідея Expires Headers полягає не тільки в тому, щоб зменшити навантаження завантажень з сервера (постійно завантажуючи один і той же файл, коли він немодифікований, витрачається дорогоцінний час завантаження), а скоріше зменшити кількість HTTP-запитів для сервера. ПОСИЛАННЯ gtmetrix.com/add-expires-headers.html
TryHarder

2

Я створив більше, ніж сотні веб-сайтів, що використовують Joomla!

У більшості випадків люди думають, що Joomla сильно працює на сервері, але згідно з зробленими мною аналізами, найважливіше зберегти ваш веб-сайт ШВИДКО - ОПТИМІЗУВАТИ Зображення та JS / CSS.

Не використовуйте редактори Joomla, як JCE, щоб просто змінити розмір зображення. Використовуйте редактори зображень, як Photoshop або будь-який інший редактор, щоб змінити розмір зображень до потрібного розміру!

Використовуйте інструменти стискання JS / CSS.

Ми завжди використовуємо інструменти Pingdom для аналізу швидкості веб-сайту, і ми використовуємо вбудовану функцію T3 Framework для оптимізації JS / CSS!


Які інструменти ви використовуєте для стиснення JS / CSS? Будь-які рекомендації щодо того, як хтось міг би проаналізувати свій веб-сайт, як ви зробили для своїх сайтів?
Девід Фрітш

Ми завжди використовуємо інструменти Pingdom для аналізу швидкості веб-сайту, і ми використовуємо вбудовану функцію T3 Framework для оптимізації JS / CSS!
Гев Балян

2
Я також успішно використовував оптимізацію JCH для досягнення великої компресії та мінімізації. Іншим варіантом є використання mod_pagespeed Apache, який в основному реалізує більшість рекомендацій Google Pagespeed.
Ешвін Дата

2
Всі хороші інструменти. @GevBalyan, я б рекомендував додавати подібні речі до своєї відповіді за допомогою посилань. Рятує людей, які гулять! Ви навіть можете відредагувати цю відповідь, щоб додати їх до цієї. :)
Девід Фрітш

Інструменти стискання, які не кешують, можуть фактично збільшити час відгуку сервера, оскільки додає час обробки відповіді сервера.
Дон Гілберт

1

Ви видалили невикористані плагіни? Joomla повинен завантажувати та обробляти кожен опублікований плагін для подій, викликаних у запиті.

Ви повинні зрозуміти встановлені вами розширення та те, як вони взаємодіють з Joomla!

У багатьох розширеннях встановлюються плагіни, які керують вмістом, системою або користувачами, щоб ініціювати функції коду. Деякі з них можуть бути зайвими.

Я знаю, що k2 встановлює багато плагінів, які відповідають на мовні події, які не дають реального виводу для сайтів з однією мовою. Скасування публікації цих плагінів може скоротити час обробки.


Чи можете ви більше про це поговорити? Що ви маєте на увазі під "подіями, викликаними"? Як я можу сказати, які події викликаються?
Девід Фрітш

1
Гарне питання. Ви повинні зрозуміти встановлені вами розширення та те, як вони взаємодіють з Joomla! У багатьох розширеннях встановлюються плагіни, які керують вмістом, системою або користувачами, щоб ініціювати функції коду. Деякі з них можуть бути зайвими. Я знаю, що k2 встановлює багато плагінів, які відповідають на мовні події, які не дають реального виводу для сайтів з однією мовою. Скасування публікації цих плагінів може скоротити час обробки. Аналогічно, і сам K2 мав погану звичку будувати дорогі запити для отримання сумнівно гідних показників.
Joomsavvy

1
Не могли б ви оновити свою відповідь інформацією у коментарі?
Харальд Лейтнер

1

Удосконалити ресурси сервера / веб-хостингу

Можливо, не відповідь, яку шукав ОП, але варто згадати, якщо це не очевидно для всіх (і жодна інша відповідь про це ще не згадувала): покращити ресурси сервера, такі як пам'ять, процесор та швидкість диска.

Якщо ви використовуєте спільний веб-хостинг, перехід від "економічного" плану до "бізнес-плану" або іншого більш досконалого плану може покращити серверні ресурси, доступні для вашого веб-сайту, і скоротити час відгуку сервера. Перехід до більш якісної хостингової компанії (наприклад, із менш переповненими серверами веб-хостингу) також може допомогти.

Кращий план хостингу також може дати вам доступ до підвищення продуктивності, які не включені в базовий план хостингу. Наприклад, плани хостингу "GrowBig" та "GoGeek" SiteGround містять динамічний кеш, який допомагає значно скоротити час відгуку сервера. Параметр динамічного кешу недоступний у плані "Запуск".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.