Come migliorare i tempi di risposta del server?


17

Cosa posso fare, oltre a utilizzare un plug-in di cache come jotcache, per migliorare i tempi di risposta del server del mio sito Web?

Ho già rimosso tutti i moduli di articoli inattivi, plugin e componenti, c'è qualcos'altro che posso fare per migliorarlo?

Sto parlando del tempo prima che il client (browser) riceva una risposta alla sua richiesta . E non il tempo di caricamento della pagina.


Il tempo di risposta è tempo prima che il documento php sia finito, quindi vuoi guardare le chiamate sql e php e poi memorizzare nella cache le domande html che suggerirei
tristanbailey,

Quando dici tempo di risposta del server, intendi la risposta dal server quando viene fatta la prima richiesta o intendi il tempo impiegato dal server per preparare e servire la pagina? Esegui il tuo sito attraverso il test di velocità di Pingdom e pubblica i risultati, così possiamo fornirti soluzioni specifiche per il problema reale.
Brent Frate,

Risposte:


25

Esistono diversi passaggi che è possibile eseguire per aumentare le prestazioni lato server. Si noti che alcuni di questi non funzioneranno con la maggior parte degli host condivisi. Per prestazioni eccezionali di solito è necessario un controllo più preciso.

Come per qualsiasi ottimizzazione, dovresti misurare l'effetto che ha sulle prestazioni del tuo sito. Per le ottimizzazioni di base sono utili strumenti come PageSpeed e YSlow (consiglio le versioni di Firefox). Per una comprensione più approfondita dovrai misurare i tempi di risposta effettivi del tuo sistema live per un periodo di tempo.

PHP

  1. Abilita cache del codice operativo

    Questa è probabilmente la cosa più grande che puoi fare per aumentare le prestazioni del tuo sito. Consiglio di usare OpCache o APC . La configurazione di queste cache può essere ottimizzata per prestazioni ancora maggiori in base alle esigenze specifiche dei server e dei siti, ma la sola installazione è già un enorme vantaggio.

  2. Aggiorna la versione di PHP

    La versione più recente di PHP include regolarmente miglioramenti delle prestazioni. Inoltre ci sono una serie di casi in cui Joomla può usare un codice migliore quando viene eseguito su una versione PHP più recente. Ad oggi non dovresti usare una versione di PHP precedente a PHP 5.4 se ti preoccupi delle prestazioni.

  3. Impostazioni PHP

    Nelle versioni precedenti di PHP (<= 5.3), assicurati di spegnere register_globalse magic_quotes_gpcottenere una prestazione gratuita. Su PHP> = 5.6 cambia always_populate_raw_post_datain -1.

  4. Estensioni PHP

    Joomla contiene del codice per aggirare le estensioni PHP mancanti. Questo sarà sempre più lento di quelle estensioni. Per un miglioramento delle prestazioni decenti installare le seguenti estensioni: mbstring, zip,ftp

Server web

  1. Abilita gzip

    L'abilitazione della compressione lato server consente di scambiare la larghezza di banda per le risorse della CPU. Per la maggior parte dei siti, questa è la chiamata giusta. Fai attenzione a comprimere solo i dati di testo, la compressione dei dati binari ti darà il successo della CPU senza i vantaggi della larghezza di banda. Puoi anche abilitare la compressione nelle impostazioni di Joomla, ma è meglio lasciare che il server lo gestisca.

  2. Precomprimere le risorse statiche

    Non sto parlando di minificazione (anche se questo aiuta anche), ma è possibile configurare Nginx e Apache per server risorse già compresse, eliminando efficacemente l'hit della CPU dalla compressione gzip. Punti bonus: usa Zopfli per file ancora più piccoli.

  3. Usa FastCGI per PHP

    Più specificamente dovresti usare php-fpm. Ciò impedisce l'avvio di PHP quando il browser richiede un file non PHP.

  4. Utilizzare le intestazioni della cache appropriate

    L'uso Expiresdell'intestazione può ridurre notevolmente le risorse del server richieste. Dopo tutto la richiesta più veloce è quella mai fatta.

Apache

In generale, consiglierei di utilizzare Nginx per siti ad alte prestazioni. Se hai assolutamente bisogno di usare Apache per qualche motivo, ho ricevuto un suggerimento bonus:

  1. Disabilita AllowOverride

    L'impostazione AllowOverridesu Noneimpedisce molti IO del disco e

Joomla

  1. Non utilizzare la modalità FTP

    Sebbene ciò non influisca sugli utenti che leggono il sito, rallenterà alcune operazioni come l'installazione dell'estensione.

  2. Disattiva le estensioni non utilizzate

    Questo vale soprattutto per i plugin, molti di questi vengono eseguiti su ogni richiesta. La disabilitazione di menu e componenti è utile soprattutto quando si elencano estensioni e tipi di menu disponibili. Inoltre, impiega 5 minuti per esaminare le estensioni fornite con il core di Joomla e disabilitare quelle che non usi.

  3. Disattiva Prepara contenuto

    Se si utilizzano molti moduli personalizzati ( mod_customnon personalizzati come scritti da sé), verificare se è possibile disabilitare Prepara contenuto in quelli. Ciò consente di risparmiare alcune elaborazioni.

  4. Usa la memorizzazione nella cache

    Se sei serio riguardo alle prestazioni, vorrai abilitare la memorizzazione nella cache. Particolarmente utile per leggere siti pesanti con molti utenti anonimi. Gli utenti che hanno effettuato l'accesso ignoreranno la maggior parte della cache, se ne hai molti, l'effetto non sarà così grande.

  5. Utilizzare un gestore di sessioni alternativo

    Usando un gestore di sessioni alternativo puoi liberare il tuo database per cose più importanti. Non consiglierei il file (chiamato confusamente Nessuno nelle impostazioni di Joomla) in quanto ciò porterà ancora una volta ad aumentare l'IO del disco. L'uso di APC è potenzialmente la soluzione, ma aumenta il rischio di perdere tutti i dati della sessione. La via di mezzo giusta è Memcache. Sebbene ciò richieda un processo aggiuntivo, è più affidabile di APC e molto più veloce della memorizzazione di tutti i dati nel database

  6. Mantieni il tuo sito semplice

    Hai davvero bisogno di quel pulsante di Facebook? Che dire di quella simpatica icona che nessuno vede mai perché è parzialmente nascosta dietro un banner? Meno il tuo sito visualizza, più veloce sarà. Inoltre, ove possibile, utilizzare CSS3 anziché le immagini.

miscellaneo

  1. Imposta una favicon

    Grazie a una decisione che risale ai browser Internet Explorer 4.0, invia una richiesta a un file chiamato favicon.icoogni volta che un utente visita il tuo sito. Se non ne hai uno, questo causa un IO non necessario, poiché 404 risposte non vengono memorizzate nella cache. Specifica l'icona del tuo sito con un meta tag HTML o aggiungi un file chiamato favicon.icoalla radice web. Non vuoi una favicon? Posiziona un PNG trasparente con una dimensione di 1x1 pixel in quella posizione. Si noti che l'estensione deve ancora essere .ico.

  2. Ottimizza le tue immagini

    È incredibile il tipo di salvataggio che si può ottenere ottimizzando le immagini, in particolare i file PNG. Ci sono una varietà di strumenti disponibili per qualsiasi sistema operativo, personalmente uso ImageOptim che è disponibile per OS X. Le immagini di base di Joomla sono già ottimizzate ma passano attraverso le tue immagini, in particolare i modelli sono importanti. Puoi anche controllare le estensioni che stai utilizzando. Se sono open source, perché non contribuisci con una richiesta pull contenente immagini appena ottimizzate?

L'avanzato

Se vuoi davvero fare di tutto, prendi in considerazione di mettere Varnish davanti al tuo sito. Memorizza nella cache le richieste sul tuo sito e, se possibile, le serve dalla propria cache, senza mai colpire Joomla. È uno strumento complesso ma con molta potenza. Joomla non sfrutterà le funzionalità avanzate come Edge Side Includes (ESI) ma il tuo codice potrebbe.


8
Sembra ... piuttosto ostile. Cordiali saluti, ho appena scritto questo, il testo non era in alcun modo preparato. Sentiti libero di cercarlo su Google. Ricorda che le risposte non dovrebbero solo aiutare l'interrogatore originale, ma anche i futuri utenti che trovano la loro strada qui.
Rouven Weßling,

13

Una GRANDE cosa che puoi fare per migliorare i tempi di risposta per il tuo sito è aggiornare le impostazioni del tuo modulo. I moduli personalizzati (usando mod_custom) hanno un'opzione per abilitare / disabilitare la preparazione del contenuto. Ciò consente di eseguire plug-in di contenuto sul contenuto di dati all'interno del modulo personalizzato. È potente se usato correttamente, ma aggiunge ulteriore tempo di rendering all'output del modulo. A meno che tu non stia effettivamente utilizzando un plug-in di contenuto all'interno del contenuto del tuo modulo personalizzato, è meglio disattivarlo. Vedrai una diminuzione del tempo di rendering del modulo quando lo fai.

Schermata dell'impostazione: inserisci qui la descrizione dell'immagine

Nota: se la mia risposta ti ha aiutato, fai clic sul segno di spunta a sinistra per accettare la risposta.


3
Non ho mai visto prima la sezione di preparazione dei contenuti. A quale versione di Joomla si applica?
TryHarder,

1
se è attivo, i plug-in possono essere eseguiti sul contenuto. Quindi, se inserisci codici funzione posizioni modulo o altri codici funzione plug-in nella textarea html personalizzata che questi non mostreranno, vedrai solo "{tag_name}" nel sito Web non la versione preparata
tristanbailey,

2
L'opzione "Prepara contenuto" è inclusa in Joomla 2.5 e 3.x. L'impostazione predefinita è "No".
Neil Robertson,

8

Presumo che tu abbia gestito il tuo sito attraverso la velocità della Pagina di Google e stai effettivamente cercando di ridurre il tempo di risposta della pagina, ovvero il tempo impiegato dal markup per essere inviato al browser.

I colpevoli più probabili per queste sono domande pesanti. Attiva il debug e osserva la parte inferiore della pagina per scoprire quali sono le query più pesanti e rimuoverle o ridurle. Puoi anche ottenere aiuto per i log delle query lente del tuo server MySQL.

La prossima cosa che puoi guardare è la memorizzazione nella cache. A seconda del tipo di sito che hai, puoi passare alla memorizzazione nella cache conservativa o progressiva. Progressivo deve essere utilizzato su siti che non dispongono di funzionalità correlate all'utente.


Potete fornire suggerimenti o schermate di come appaiono le domande pesanti? C'è qualche soglia da raggiungere?
David Fritsch,

Dipende davvero dalla tua applicazione. Tuttavia, qualsiasi query che si trova nel registro delle query lente (che in impostazioni normali registra qualsiasi query che richiede oltre 1 secondo per essere eseguita) è un buon candidato per interrompere e / o mettere in una cache. Un'altra cosa che potrebbe sembrare sciocca, ma assicurati che tutte le query abbiano un LIMIT.
Ashwin Date

6

Le cose che conosco possono aiutare (la maggior parte delle quali sono state elencate) sono queste:

  1. caching
  2. Compressione (gzip i file css e js)
  3. Combinazione di file (tutti i tuoi CSS vengono combinati in un unico file)
  4. Scaricare immagini e file su una rete CDN.

Ho usato una combinazione della cache Joomla integrata (o persino APC abilitata sul server) e plugin come gzip o il plugin rockbooster del tema razzo. Uso anche un plug-in CDN nonumbers con un account Amazon.

Sicuramente aiuta, ma devi guardare il tuo sito e disabilitare la cache per i componenti che hanno problemi. Ho dovuto bypassare CiviCRM sul nostro sito perché non funzionava bene con la memorizzazione nella cache. Joomla viene fornito con un plugin cachecontrol in grado di gestirlo.


2
combina e comprimi anche le tue immagini quando possibile. Gli sprite possono salvare dozzine di richieste per caricamento della pagina.
ContextSwitch

Mi dimentico sempre degli sprite. :)
Brian Peat,

attenzione agli sprite: le immagini di sfondo non vengono visualizzate quando Windows passa alla modalità Contrasto elevato. Mentre questo comportamento è il benvenuto per la grafica generale, è un problema per i controlli che devono essere cliccati dall'utente - semplicemente scompaiono (esempio: pulsanti di voto su questo sito)
miroxlav

Heh Brian Peat, mi chiedo se potresti essere interessato ad aiutarci a lanciare un sito CiviCRM su StackExchange. Abbiamo bisogno di committer che hanno oltre 200 reputazione su qualche altro sito StackExchange : area51.stackexchange.com/proposals/77367/civicrm Cheers!
Joe Murray,

Darò un'occhiata. Tutto questo era basato su Joomla e non ho fatto alcuna programmazione, ma potrei essere in grado di aiutare con domande di base.
Brian Peat,

4

Dovresti anche cercare di ridurre le risorse locali e la corretta memorizzazione nella cache. Una cosa che puoi fare è usare i plugin CDN. Eccone due che consiglierei:

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

NoNumbers CDN per Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Inoltre, se nessuno dei precedenti sembra risolvere i problemi, potresti avere un problema più profondo, probabilmente all'interno del tuo modello, del server stesso o di altre cose. In tal caso, potrebbe essere meglio assumere qualcuno per dare la caccia al problema e risolverlo per te.


3

Puoi anche usare questo codice nel tuo file .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>

sembra interessante, puoi spiegarci cosa fa?
web-tiki,

@ web-tiki L'impostazione scade le intestazioni. Le intestazioni scadute indicano al browser se devono richiedere un file specifico dal server o se devono recuperarlo dalla cache del browser. L'idea alla base di Expires Headers non è solo quella di ridurre il carico di download dal server (scaricare costantemente lo stesso file quando non modificato sta sprecando tempo prezioso nel caricamento), ma piuttosto ridurre il numero di richieste HTTP per il server. RIFERIMENTO gtmetrix.com/add-expires-headers.html
TryHarder

2

Ho creato più di centinaia di siti Web usando Joomla!

Nella maggior parte dei casi le persone pensano che Joomla stia lavorando molto sul server, ma secondo le analisi fatte da me, la cosa più importante per mantenere il tuo sito VELOCE è OTTIMIZZARE LE IMMAGINI e JS / CSS.

Non usare gli editor di Joomla, come JCE, per cambiare semplicemente le dimensioni dell'immagine. Usa editor di immagini come Photoshop o qualsiasi altro editor per ridimensionare le tue immagini alla dimensione necessaria!

Utilizzare gli strumenti di compressione JS / CSS.

Usiamo sempre gli strumenti Pingdom per analizzare la velocità del sito Web e utilizziamo la funzionalità integrata di T3 Framework per ottimizzare JS / CSS!


Quali strumenti usi per la compressione JS / CSS? Qualche consiglio su come qualcuno potrebbe analizzare il proprio sito Web come hai fatto per i tuoi siti?
David Fritsch,

Usiamo sempre gli strumenti Pingdom per analizzare la velocità del sito Web e utilizziamo la funzionalità integrata di T3 Framework per ottimizzare JS / CSS!
Gev Balyan,

2
Ho anche usato con successo l'ottimizzazione JCH per ottenere molta compressione e minimizzazione. Un'altra opzione è quella di utilizzare mod_pagespeed di Apache che implementa sostanzialmente la maggior parte dei consigli di Google Pagespeed.
Ashwin Date

2
Tutti buoni strumenti. @GevBalyan, consiglierei di aggiungere cose come questa nella tua risposta con i link. Salva le persone su Google! Puoi persino modificare questa risposta per aggiungerle a questa. :)
David Fritsch,

La compressione di strumenti che non memorizzano nella cache può effettivamente aumentare i tempi di risposta del server, poiché aggiunge tempo di elaborazione alla risposta del server.
Don Gilbert,

1

Hai rimosso plugin inutilizzati? Joomla deve caricare ed elaborare tutti i plugin pubblicati per eventi attivati ​​in una richiesta.

Devi capire le estensioni che hai installato e come interagiscono con Joomla!

Molte estensioni installano plug-in che gestiscono il contenuto, il sistema o le attività dell'utente per avviare funzioni di codice. Alcuni di loro potrebbero essere superflui.

So che k2 installa molti plug-in che rispondono ad eventi relativi alla lingua che non producono output reali per siti in una sola lingua. Annullare la pubblicazione di questi plugin può ridurre i tempi di elaborazione.


Puoi parlarne di più? Cosa intendi con "eventi innescati"? Come posso sapere quali eventi sono stati attivati?
David Fritsch,

1
Buona domanda. Devi capire le estensioni che hai installato e come interagiscono con Joomla! Molte estensioni installano plug-in che gestiscono il contenuto, il sistema o le attività dell'utente per avviare funzioni di codice. Alcuni di loro potrebbero essere superflui. So che k2 installa molti plug-in che rispondono ad eventi relativi alla lingua che non producono output reali per siti in una sola lingua. Annullare la pubblicazione di questi plugin può ridurre i tempi di elaborazione. Allo stesso modo, però, la stessa K2 ha avuto la cattiva abitudine di creare query costose per produrre metriche discutibilmente degne.
Joomsavvy,

1
Potresti per favore aggiornare la tua risposta con le informazioni nel tuo commento?
Harald Leithner,

1

Migliora le risorse del piano server / web hosting

Forse non è la risposta che l'OP stava cercando ma vale la pena menzionare nel caso in cui non sia ovvio per tutti (e nessun'altra risposta lo abbia ancora menzionato): migliorare le risorse del server come memoria, CPU e velocità del disco.

Se si utilizza l'hosting Web condiviso, l'aggiornamento dal piano "economia" al piano "aziendale" o un altro piano più avanzato può migliorare le risorse del server disponibili sul sito Web e ridurre i tempi di risposta del server. Anche il passaggio a una società di hosting di qualità migliore (ad esempio con server di hosting Web condivisi meno affollati) potrebbe essere d'aiuto.

Un piano di hosting migliore potrebbe anche consentire l'accesso a miglioramenti delle prestazioni che non sono inclusi nel piano di hosting di base. Ad esempio, i piani di hosting "GrowBig" e "GoGeek" di SiteGround includono cache dinamica che consente di ridurre significativamente i tempi di risposta del server. L'opzione cache dinamica non è disponibile nel piano "Avvio".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.