Ho installato Boost su di un paio di siti in modo da sveltirli un po'.
Uno di questi è su Tophost, Webmaster Tools segnava un tempo di caricamento per pagina di 4 secondi, null'altro su di un server virtuale che segnava 2.8 secondi.
Per sveltire l'operazione di formazione delle pagine html ho fatto una serie di click compresa la Home Page che è quella dove attualmente google fa i test.
I risultati sono nel primo sito da 4 secondi è finito a 4.9 secondi per la home page.
Nel secondo peggio ancora, è passato da 2.8 a 5.5 secondi per la Home Page .
Ma come c... è possibile? Non dovrebbe essere più veloce il caricamento delle pagine essendo in html?
Ciao Krima, anch'io ho installato Boost, proprio ieri. I miei appunti:
Boost install
In
admin/reports/status
:Warning: Apache module "mod_headers" is not installed. (in locale)
Soluzione:
sudo a2enmod headers
sudo /etc/init.d/apache2 restart
Warning: "Disallow: /boost_stats.php" entry missing in robots.txt
Soluzione: aggiungi la riga nella sezione # Files (riga 42)
Warning: .htaccess file
Soluzione: Vai in
admin/settings/performance/boost-rules
copia il codice ed incollarlo in .htaccess dove dice lui.Warning: Cache path (in locale)
Soluzione: Nel root del installazione di Drupal crea l'indirizzo
cache
, controlla owner/group e permessi del indirizzocache
Boost configurazione
In
admin/settings/performance
Attivare 'Gzip page compression (Boost & Core)', 'Ottimizza i file CSS', 'Ottimizza i files JavaScript'
Apri un altro browser e vai su tuo sito come utente anonimo. Guarda qualche pagine. Controlla i contenuti di
cache
che dovrebberano iniziare a riempirsi di filexxx.html
exxx.html.gz
Tempi (Firefox/Firebug Net) - server esterno
pagina 1 (view) 2.2s -> 0.138s
pagina 2 (view) 2.7s -> 0.282s
pagina 3 (view) 1.7s -> 0.290s
pagina 4 (view) 2.6s -> 0.394s
Può impiegare più tempo se falliscono i test di Boost (perchè il cache non c'è) e quindi deve passare per Drupal. Nel indirizzo
cache
inizi a vedere qualche file prodotto? Nella tabellaboost_cache
vedi qualche record in più?Più imparo, più dubito.
Ciao John e grazie per la risposta
In realtà ho fatto tutto quello che era richiesto, importato l'.htaccess, modificato il robot.txt , la tabella boost_cache registra regolarmente i record ecc.
Le pagine di cache sono correttamente create ma le prestazioni peggiorano...
Ho fatto una prova con Firefox/Firebug Net ed in effetti qualcosina si recupera, però capita che a volte ci metta il doppio:
Con Boost attivo:
2.38 secondi
1.93 secondi
4.43 secondi
1.6 secondi
2.1 secondi
1.9 secondi
1.79 secondi
2.05 secondi
Con la cache di Drupal:
2.37
2.87
2.69
2.7
2.73
Ogni volta ho eliminato la cache di Firefox altrimenti il caricamento sarebbe stato falsato.
La cosa strana è che Google segnala un netto aumento dei tempi di caricamento e questo non è il massimo visto che sta lavorando per premiare i siti più veloci e penalizzare quelli più lenti.
Non so cosa dirti. Ho ripovato in locale:
1. Niente Boost, cache di FF pulito, cache di Boost pulito.
pagina 1 - 421ms
pagina 2 - 533ms
pagina 3 - 447ms
2. Boost, cache di FF pulito.
pagina 1 - 433ms, poi 97ms. Ripulito cache FF 103ms
pagina 2 - 556ms, poi 103ms. Ripulito cache FF 111ms
pagina 3 - 471ms, poi 99ms. Ripulito cache FF 106ms
3. Niente Boost, cache di FF pulito, cache di Boost pulito.
pagina 1 - 418ms
pagina 2 - 538ms
pagina 3 - 436ms
(Fra parentesi Firebug Net avvisa se è stato usato il cache del browser)
Più imparo, più dubito.
Sì fa la stessa cosa anche a me, la prima volta che si carica con Boost ci mette poco meno della cache Drupal (a parte qualche volta) anche se a te vedo ci mette qualcosina in più, ripulito FF e ricaricata la pagina ci mette di meno.
Evidentemente non è cosi performante come viene promosso o forse dipende anche dalla potenza del server. In realtà ci sono sempre delle query al db anche con Boost e questo potrebbe essere il problema.
Su tophost, che con Drupal da i risultati scritti sopra. In un sito che ho fatto in html+php senza db ci mette 1 secondo per la home...
Mah, sono ancora convinto che qualcosa non è apposto...
La prima volta Drupal carica la pagina e Boost lo salva come file (e anche informazione dello cache nel db). Quindi deve mettere un pocchino di più del solito.
Io l'ho trovato molto performante. Vedo un miglioramento da 5 a 10 volte. Infatti costa poco di più che il browser che carica la pagina HTML dal suo cache.
No, con Boost dopo che è stato creato il file HTML, non ci sono query al db, perchè non passa più per Drupal, ma solo tramite Apache (grazie a quei comandi in più nel .htaccess). Boost ha un crawler (o spider) gestito da cron per rinfrescare le pagine salvati come file.
Precedentemente hai scritto:
(Emfasi mio). Hai inserito il testo generato da Boost nel .htaccess originale spero - quello generato è un aggiunto, non è un file completo.
Più imparo, più dubito.
Sì certamente :-)
Ad ogni modo lo sto lasciando attivo, vediamo tra qualche giorno come reagisce Google...
Mi sembra molto strano che le richieste al solo Apache richiedano più tempo delle richiesta a Apache + le richieste al DB. Concordo con John che c'è qualcosa che va controllato nella conf. di Boost.
sto provando il modulo boost, ma vedo gli stessi tempi di caricamento, come faccio a capire se sta funzionando o no?
Come ho spiegato nei miei appunti sopra (#1) devi:
Più imparo, più dubito.
non trovo errori nei log ma non trovo nemmeno le pagine html però.
come è possibile non trovo le pagine html?
ragazzi ma per caso devo disattivare la cache di drupal per usare boost?
Sì devi disativarla, lascia attiva la compressione css e js
grazie per la risp, ma ancora non vedo le pagine con l'estensione .html, è normale?
secondo me no, perchè i tempi di caricamento sono pressocchè identici se non superiori.
Forse aiuta se spiego come funziona Boost. (E' molto semplice)
1. Lui converte le pagine generati da Drupal in pagine statiche.
2. Con un apposito modifica al file .htaccess per aggiungere delle regole rewrite, fa che Apache trova questi file statiche (ma se non lo trova, passa per Drupal)
Il risultato è un notevole riduzione nel tempo di fornire la pagina - perchè non passa più per Drupal, quindi non carica tutti quei file $P->H->P.
Ma non può funzionare immediatemente (cioè appena abilitato il modulo) perchè non sono stati messi quelle regole di rewrite nel file .htaccess.
E' inutile guardare nel log - non lo scrive mai, finchè non ha accertato che il sistema è configurato correttamente. Bisogna (come già detto) guardare nello report di stato
admin/reports/status
, e seguire i suoi consigli, come ho fatto io in #1.Uno degli tanti opzioni di Boost, nella pagina
admin/settings/performance/boost
è 'Inject boost tags at the bottom of the file', sotto la voce 'Boost Apache .htaccess settings generation'. Poi, come anonimo, ricarica la pagina, se Boost sta funzionando correttamente, in fondo al sorgente HTML troverai un commento:...
</html>
<!-- Page cached by Boost @ 2010-06-27 01:03:36, expires @ 2010-06-27 02:03:36 -->
Più imparo, più dubito.
si john grazie per le spiegazioni :)
ma dopo aver abilitato il modulo, modificato l'htaccess e il robots come chiestomi dal modulo stesso, vedo in fondo al codice sorgente delle pagine la scritta che dici tu:
""
ma oltre al fatto che gli url delle pagine non hanno l'estensione ".html" come altri siti che usano il modulo boost, ho notato che il caricamento delle pagine è leggermente superiore a prima.
nel log non trovo errori, cosa può essere?
Un passo avanti...
Bene, sembra che Boost (almeno al interno di Drupal) sta funzionando.
Gli URL non cambiano. Il fatto che impiega leggeremente più tempo indica che Boost sta generando la pagina (dentro Drupal) ogni volta. Invece dovrebbe farlo una volta solo, dopodichè subentra Apache.
Questo potrebb'essere lo stesso problema che ha krima.
Allora in admin/settings/performance/boost sotto la voce 'Boost directories and file extensions' ho settato un indirizzo per i file cachati - si chiama
cache
.Hai questo indirizzo nel root di Drupal? Ha i permessi giusti?
Sotto questo indirizzo ci sono altri due 'normal' e 'perm'. Dentro di essi c'è un indirizzo con il dominio del sito, tipo www.sito.it
Esempio mio:
cache www-data john 775
normal www-data john 775
www.sito.it www-data john 775
[altri indirizzi contenente file .html e .html.gz del sito]
_.html www-data www-data 644
_.html.gz www-data www-data 644
.boost www-data www-data 644
perm www-data john 775
www.sito.it www-data john 775
[altri indirizzi contenente file .css e .js dei moduli, ecc]
.boost www-data www-data 644
.boost www-data www-data 644
Il file
_.html
corresponde al (e contiene) l'home page.Io ho dovuto creare l'indirizzo
cache
(era uno degli errori/suggerimenti di Boost in #1). Il resto lo fa lui...Più imparo, più dubito.
grazie jogn per la risposta.
si le directory che mi hai detto ci sono e i permessi sono giusti anche.
allora perchè è piu lento?
Ok. Presumo che ti ha anche creato i files che avevo listato.
Oltre al notevolissimo miglioramento nel tempo di risposta (che tu non hai), si può fare un analisi più approfondito con i log di Apache. Ho fatto tutte le prove in locale, usando Firefox e Firebug Net.
Per vedere i risultati delle regole rewrite ho aggiunto le seguente commandi al mio
<VirtualHost>
:<VirtualHost *:80>
...
LogLevel info
ErrorLog /percorso/ai/file/di/log/error.log
CustomLog /percorso/ai/file/di/log/access.log combined
RewriteLogLevel 1
RewriteLog /percorso/ai/file/di/log/rewrite.log
</VirtualHost>
Prima prova - creazione del file statico.
Vado al home page in Firefox, abilito Net.
Controllo che non esiste
_.html
e_.html.gz
incache/normal/www.sito.it[/codefilter_code], cancellandoli
Pulisco il cache di Firefox, vado sulla barra degli indirizzi, e premo Enter (emetto di nuovo la richiesta del home page).
Risutati in access.log:
127.0.0.1 - - [28/Jun/2010:19:41:17 +0200] "GET / HTTP/1.1" 200 3108 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9"
Risultati in rewrite.log (abbreviato):
127.0.0.1 - - [28/Jun/2010:19:41:17 +0200] [rid#7fedf1f6f958/initial] (1) [perdir /www.sito.it/] pass through /www.sito.it/
127.0.0.1 - - [28/Jun/2010:19:41:17 +0200] [rid#7fedf1f92be8/subreq] (1) [perdir /www.sito.it/] internal redirect with /index.php [INTERNAL REDIRECT]
127.0.0.1 - - [28/Jun/2010:19:41:17 +0200] [rid#7fedf1f98c18/subreq] (1) [perdir /www.sito.it/] internal redirect with /index.php [INTERNAL REDIRECT]
127.0.0.1 - - [28/Jun/2010:19:41:17 +0200] [rid#7fedf1f8e838/subreq] (1) [perdir /www.sito.it/] internal redirect with /index.php [INTERNAL REDIRECT]
127.0.0.1 - - [28/Jun/2010:19:41:17 +0200] [rid#7fedf1f6d948/subreq] (1) [perdir /www.sito.it/] pass through /www.sito.it/index.php
[/codefilter_code]
Risultato Firebug Net: Tempo di caricamento 591ms.
A questo punto sono stati creati i due file
_.html
e_.html.gz
incache/normal/www.sito.it[/codefilter_code].
Seconda prova - richiesta del file statico.
Pulisco il cache di Firefox, vado sulla barra degli indirizzi, e premo Enter (emetto di nuovo la richiesta del home page).
Risutati in access.log:
127.0.0.1 - - [28/Jun/2010:19:43:22 +0200] "GET / HTTP/1.1" 200 3265 "-" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100402 Ubuntu/9.10 (karmic) Firefox/3.5.9"
Risultati in rewrite.log (abbreviato):
127.0.0.1 - - [28/Jun/2010:19:43:22 +0200] [rid#7fedf1f6f958/initial] (1) [perdir /www.sito.it/] internal redirect with /cache/normal/www.sito.it/_.html.gz [INTERNAL REDIRECT]
127.0.0.1 - - [28/Jun/2010:19:43:22 +0200] [rid#7fedf1f6f958/initial] (1) force filename redirect:/cache/normal/www.sito.it/_.html.gz to have MIME-type 'text/html'
127.0.0.1 - - [28/Jun/2010:19:43:22 +0200] [rid#7fedf1f915a8/initial/redir#1] (1) [perdir /www.sito.it/] pass through /www.sito.it/cache/normal/www.sito.it/_.html.gz
[/codefilter_code]
Risultato Firebug Net: Tempo di caricamento 51ms.
Più imparo, più dubito.
dove trovo il file rewrite.log di apache?
Come ho descritto in #20 ho aggiunto dei comandi in locale perchè Apache crea e scrive quel file. Quello che dimenticavo era che dopo bisogna fare il restart di Apache:
sudo /etc/init.d/apache2 restart
Più imparo, più dubito.
a proposito di cache se potreste chiarire:
in riferimento a tale indicazione:
rispetto alla modifica che richiede il modulo boost per l'htaccess, quale è?
da quel che ho capito il settaggio di default di htaccess fa in modo che un user quando apre una pagina web, sul suo pc viene caricata una copia che rimane per 15gg; quando ritorna al sito in realtà lui rivede la sua se ha nacora i cookie;
l'htaccess di default impone che se la pagina è .html significa che nel pc dell'user non deve essere caricata la pagina?
inoltre per funzionare la modifica sopra mi sembra di aver letto in altro post che serve usar CDN (non ricordo se è un modulo) che è una soluzione che tiene conto dei nomi dei file che devono essere ogni volta diversi per evitare che un user legga solo e sempre la sua cache (nel caso la modifica al posto dei 15 gg imponga 6 mesi)
aggiungo
se con fckeditor si crea una pagina, quindi pagina html in realtà drupal per farla vedere
deve ripescarla dal db e viene innescato un bootstrat (4,5 mb per ogni user, cosa sarebbe?
forse già 10 user sono 45 mb di memoria solo per 'pescare' la pagina?)
per ridurre il problema : usareil modulo boost che evita se non ho capito male il passaggio bootstrat;
cioè viene creato un file dentro qualche cartella e non vi è piu' l'estrazione dei dati dal db?
quindi mysql non lavora e php nemmeno?
è possibile avendo dei file in html fare la stessa cosa senza tale modulo?
cioè creare voci di menu' che puntano a tali file e drupal li fa vedere subito senza eseguire query, richiami php etc?
Nessuna. Rimane invariato. Per HTML nessun cache. Per immagini, CSS, JS, 14 giorni.
Solo per file immagini, CSS, JS. Quando dico immagini vuol dire immagine, video, flash, ecc.
Quasi, se il file è del tipo text/html (indipendente se ha un estensione o no) allora non deve essere cachato sul PC del utente.
La soluzione CDN serve quando il carico del server è troppo alto. Fa dividere il compito di servire pagine text/html al server originale, e il compito di servire i file immagini, CSS, e JS al CDN (che è un altro server). Il traffico sul sito dev'essere abbastanza alto prima che serve una soluzione del genere...
Ogni richiesta POST passa per Drupal, quindi la pagina node/xxx/edit viene fornito da Boost, poi l'invio passa per Big D.
Ogni richiesta a Drupal viene seguito da un bootstrap del codice PHP di Drupal, connessione al DB, ecc. Questo consuma dai 4/5 MB ai 40 e oltre MB, dipende della richiesta (pagina semplice di nodo, pagina complesso di vista). Normalmente Apache ha dai 5 ai 10 processi attivi che possono contemporaneamente richiedere questa memoria, ma dipende dal tipo di hosting che hai. Se ci sono più richieste che processi, devono aspettare che si libera un processo - con il rischio di andare in timeout - "The server is too busy, try again later".
Si, Boost prende un fotocopia della pagina e la salva come file, poi ad ogni richiesta è questo file che viene restituito da Apache. Niente Drupal, niente PHP, niente DB.
Si. Ho un sito misto Drupal e pagine statica HTML. Nessun problema oltre per il index.html che deve essere tolto, altrimenti Drupal non funziona più.
Più imparo, più dubito.
qundo conviene invece dire ad htaccess di dire al pc di tenere anche html nel browser?
-----------
invece boost che modifca richiede di fare all' htaccess?
------------
ma il modulo cachestatic fa la stessa cosa di boost?
come kb è piu' leggero
------------
ma consuma troppo drupal? cioè in localhost e per una semplice pagina
devel_init()=2.11 MB, devel_shutdown()=23.82 MB.
(non so cosa siano i 23 MB)
ma se per cosi' poco vuole 2Mb di menoria vuol dire che per chi ha gia 100 utenti deve iniziare ad avere un server da 3-400Mb di ram garantita?
ma salva dentro una cartella apposita?
comunque un po' di php rimane: quando deve caricare tutti i moduli,i menu, e i blocchi; ma credo che per questi non si possa fare niente;
non se se sui moduli non in uso si possa fare qualcosa e se nel
cliccare una voce di menu si possa evitare di far ricaricare tutto
le pagine statiche come le carichi e come le linki ai menu' o tassonomia?
nota tecnica :
sbaglio o è molto scomodo il blocco Iscrizioni messo sulla colonna di dx per chi è linkato e deve scrivere/leggere nel forum?
i post centrali diventano troppo stretti
In pratica una serie di regole rewrite per deviare Apache a caricare i file statici invece di passare per Drupal.
Non lo conosco. Boost ha una storicità molto lungo (nato nella versione 4.7 di Drupal)
In realtà quel 2MB è solo dopo il bootstrap, Drupal non ha ancora iniziato a costruire la pagina. Il valore 'reale' è quello finale, cioè dopo che ha costruito la pagina, e spedito al browser. Quindi 24MB.
Si i file vengono salvati in un indirizzo proprio, con nome originale di cache.
No, se il file cache esiste, risponde alla richiesta Apache. Drupal non viene caricato - neanche un byte.
Nel caso specifico, è una migrazione a lungo termine da un sito statico a Drupal. Nelle pagine statiche ho solo aggiunto un link a un landing page in Drupal, usando URL assoluto, ma essente del dominio, per esempio /node/10876
Più imparo, più dubito.
non riesco a farmi un'idea dei passaggi;
creo con un editor un file a.html, dopo come faccio a caricarlo dentro
a drupal? se incollo il codice dentro a un nodo, la pagina visualizzata è tramite il db e non direttamente dal file a.html;
ma cosi in realtà non si sta puntando ad un nodo i cui dati sono dentro al db e non a un file messo in qualche cartella di drupal?
. . . .
dentro la root di drupal ho solo un index.php, sopra dicevi che con le pagine statiche da te caricate non puoi piu' avere l'index.html, potresti spiegare?
Non rispondo alla prima domanda perchè non pertinente al thread - se vuoi una risposta apri un altro thread. Anche il secondo è un pò fuori tema, ma avevo iniziato io, quindi...
Se noi accediamo al home page con http://www.sito.it/ Apache cerca nel indirizzo root una serie di file 'speciale', compreso (in ordine):
Se abbiamo messo un file index.html Apache risponderà con questo file per tutti gli URL 'virtuale' di Drupal, esempio:
Così index.html 'blocca' il funzionamento di Drupal.
Più imparo, più dubito.
per chi interessato a seguire al new thread inerente file html da inglobare in drupal http://www.drupalitalia.org/node/11184
quali sarebbero queste regole per l'url rewrite chne servono a boost? come le attivo e verifico che stanno funzionando?
Questo spiega perchè Boost non sta funzionando per te...
In
admin/settings/performance/default
troverai due tab 'Boost Settings' e 'Boost htaccess rules generation'. Una volta sistemato gli settings (parametri) nella pagina 'Boost Settings' bisogna andare nella pagina 'Boost htaccess rules generation' dove viene generato un pezzo di testo che devi inserire in .htaccess nel indirizzo root di Drupal. Se cambi i settings, è meglio refare questo processo.La pagina stessa non solo fornisce il testo, ma spiega dove va messo: dopo il comando
RewriteBase
e prima degli altri comandi diRewrite
Altrimenti Boost crea i file statici delle pagine, ma Apache non lo legge...
Più imparo, più dubito.
john quel codice l'ho inserito nell'htaccess, ma i tempi di caricamento dopo che ho pulito la cache e ho fatto il logout sono i medesimi. non ne sto venendo a capo. :(
nell'ultimo boost non serve andara a copiare i l codice dentro htaccess si spuntala caselle si salva e copia lui;
devi per vedere se funziona navifgaer come anonimo;
apache deve aver abilitato il mod_headers
- - -- testat e funziona ma non so se al max;
es yslow da grade E è passato a D; pagina prima 220kb ora 70Kb, tempi yslow da 2,32 2,72 secondi (non ricordo la differenza dei 2 dati )
a 1,04 1,82 sec;
le req che indica yslow rimaste pero' uguali;
Solo che su
admin/settings/performance
se abilito:
Block cache; Optimize CSS files e Optimize JavaScript files;
In realtà basta che abilito solo le ultime 2, drupal si pianta e bisogna
reinstallare tutto il db;
non so se è un bug;
____________________________________________________
Boost - HTML - Default maximum cache lifetime:
di default il modulo mette a 1 ora ma cosa è e quiale setatggio migliore?
__________________________________________________
inoltre nel codice htaccess scrive
i siti che creo es drupal_sito e drupal sito1 per usarli vado su
http://localhost/drupal_sito/
http://localhost/drupal_sito1/
ed ognuno ha il suo htaccess che sarà a livello di cartella qui dentro
C:\EasyPHP\www\drupal_sito
o
C:\EasyPHP\www\drupal_sito1
si puo' scrivere un rewrite usando non ogni volta
drupal_sito drupal_sito1 ma una variabile che riconosca già dove si trova?
tra i settagi ho visto che vi sono:
Servers URL or Name:
- %{SERVER_NAME}
- %{HTTP_HOST}
- localhost
Document Root:
%{DOCUMENT_ROOT}
C:/EasyPHP/www
dipende da questi?
______________________________________________________
sempre in
/admin/settings/performance/boost
visto che ci sono moltissimi settaggi quali preferibili?
hai risolto poi?
ragazzi ma usando boost, dando un lifetime della pagina di 12 ore e dando ad una views un tempo di cache di 6 ore, quest'ultima verrà aggiornata 2 volte nelle 12 ore o l'aggiornamento lo avrò sempre ogni 6 ore?
grazie