Passaggi per ottimizzare WordPress in relazione al carico del server?
-
-
seeseguiiltuo sito su vps,dovrestiprovare redis cache.if you run your site on vps , you should try redis cache.
- 0
- 2014-04-05
- ahmetlutfu
-
14 risposta
- voti
-
- 2010-08-18
Potrestiinstallare WordPress su Nginx. Sono disponibilinumerose risorseper aiutare:
Alcuneinformazioni sulleprestazioni da quell'ultimo collegamento (che sembraessere una configurazione leggermente diversa dagli altri):
Quindi ho deciso dimettere unproxy davanti di wordpressnella cache staticatanto possibile. TUTTOnon autenticato iltraffico è servito direttamente dal nginxfile cache,prendendo alcune richieste (come lagenerazione difeed RSS) da 6 pagine/secondo a 7000+pagine/secondo. Oof. Nginxgestisce anche la registrazionee gzipping,lasciandoilbackendpiùpesante apache afare quello che sannofaremeglio: servire pagine dinamiche di wordpress solo quando necessario.
...
Sunginx: è cosìefficiente che è spaventoso. Non l'homai visto usare dipiù da 10 a 15mega di RAMe unblip di CPU,anche sottoilnostro caricopiùpesante. Nostro i grafici deiganglinonmentono: li abbiamo dimezzati i nostri requisiti dimemoria,hanno raddoppiatoilnostro velocitàeffettiva di retein uscitae ha completamente livellatoilnostro carico. Noi da alloranon hannopraticamente avutoproblemi lo abbiamoimpostato.
You could install WordPress on Nginx. There are a number of resources to help:
Some performance information from that last link (which appears to be a bit different setup than the others):
So I decided to put a proxy in front of wordpress to static cache as much as possible. ALL non-authenticated traffic is served directly from the nginx file cache, taking some requests (such as RSS feed generation) from 6 pages/second to 7000+ pages/second. Oof. Nginx also handles logging and gzipping, leaving the heavier backend apaches to do what they do best: serve dynamic wordpress pages only when needed.
...
On nginx – it’s so efficient it’s scary. I’ve never seen it use more than 10 to 15 meg of RAM and a blip of CPU, even under our heaviest load. Our ganglia graphs don’t lie: we halved our memory requirements, doubled our outgoing network throughput and completely leveled out our load. We have had basically no problems since we set this up.
-
Qualcuno ha delle statistiche sui risparmi di velocità dell'utilizzo di Nginx?Anyone have any stats on the speed savings of using Nginx?
- 0
- 2010-08-18
- Mike Lee
-
Mike,ho aggiunto un altro collegamentoe alcuneinformazioni da quelpost.Mike, I added another link, and some information from that post.
- 0
- 2010-08-18
- Travis Northcutt
-
Ho spostatoilmioblogprincipale da un server 1G con Apachein esecuzione a un server 512M con Nginx.Funzionain modopiùfluido,nonostante la diminuzione della RAM.Certo,ho altri serviziin esecuzione sul server 1G,però (email,imap,mailman,molti altri siti web abassotraffico).I moved my main blog from a 1G server running Apache to a 512M server runing Nginx. Runs more smoothly, despite the decrease in RAM. Admittedly, I have other services running on the 1G server, though (email, imap, mailman, several other low-traffic web sites).
- 0
- 2012-06-07
- Dougal Campbell
-
NB l'esecuzione di WordPress sunginx è diverso dall'utilizzo dinginx come cacheproxy davanti a Wordpress.NB running WordPress on nginx is different from using nginx as a proxy cache in front of Wordpress.
- 0
- 2013-05-02
- sam
-
- 2010-08-14
Imposta le scadenze lato clientperelementi come CSS,immagini,JavaScript,ecc. chenon devonoessere scaricati dinuovoper ogni visualizzazione dipagina. Questo,digran lunga,hafatto la differenzapiùgrandeperi tempi di caricamento delmio sito. Il downloadpiù veloce èil download chenon èmai avvenuto ...
# BEGIN Expire headers <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 7200 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 2592000 seconds" ExpiresByType text/javascript "access plus 2592000 seconds" ExpiresByType application/x-javascript "access plus 2592000 seconds" ExpiresByType text/html "access plus 7200 seconds" ExpiresByType application/xhtml+xml "access plus 7200 seconds" </IfModule> # END Expire headers # BEGIN Cache-Control Headers <IfModule mod_headers.c> <FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz)$"> Header set Cache-Control "max-age=2592000, public" </FilesMatch> <FilesMatch "\\.(css)$"> Header set Cache-Control "max-age=2592000, public" </FilesMatch> <FilesMatch "\\.(js)$"> Header set Cache-Control "max-age=2592000, private" </FilesMatch> <filesMatch "\\.(html|htm)$"> Header set Cache-Control "max-age=7200, public" </filesMatch> # Disable caching for scripts and other dynamic files <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> </IfModule> # END Cache-Control Headers
Puoipre-comprimeretutto ciò chepuoi ragionevolmente (7-zip è unbuon strumentoper questo) & amp; caricalonello stessoposto delfile che hai appena compresso. Cambia .htaccessper servirei filepre-compressi,come di seguito. L'avvertenza qui è che devi ricordarti di ri-comprimerli se/quando aggiorni le cose. Questoeliminail sovraccarico della CPU,aparte l'analisi di .htaccess.
RewriteEngine on #Check to see if browser can accept gzip files. If so and we have it - serve it! ReWriteCond %{HTTP:accept-encoding} gzip RewriteCond %{HTTP_USER_AGENT} !Safari #make sure there's no trailing .gz on the url ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$ #check to see if a .gz version of the file exists. RewriteCond %{REQUEST_FILENAME}.gz -f #All conditions met so add .gz to URL filename (invisibly) RewriteRule ^(.+) $1.gz [QSA,L]
Questa è solo una rispostagrezza. Ci sonomolte variazioni su questotema. Ho scritto unblog su questoe ho aggiunto alcuni riferimenti ad articolipiù approfonditi su http://icanhazdot.net/23/2010/03/roba-wordpress/. Leggiloe,cosapiùimportante,i riferimenti a cuiindico: sonobuone risorse.
Tienipresente che se armeggi spesso,gli utenti dovranno aggiornare lapropria cache.
Anche unplugin che hotrovatomolto utile è wp-minify . La cosa daguardare con questo è che dovrestiescludereelementi specifici dellapagina (modulo di contatto,dispositivo di scorrimento dellaprimapaginaecc.) Inmodo danon scaricarenuovamente l'intero set di css,JSecc. Per ognipagina. È unbuonmodoperminimizzare,combinare & amp; comprimi latuabaseline CSS,JSecc. Riducemolto le richieste http. Wp-minifyfunzionabene con supercachee anche con leintestazioni di scadenza che ho descritto sopra.
Usa Yslowin Firebug (Firefox) o similipermonitorare letue richieste httpe cosa èe cosanon è compresso. Dai un'occhiata anche alleintestazioni di scadenza. Presto vedrai cosapuoimigliorare.
Set client-side expiries for things like css, images, JavaScript etc which don't need to be redownloaded for each page view. This, by far, made the biggest difference to my site loading times. The fastest download is the download that never happened ...
# BEGIN Expire headers <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 7200 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 2592000 seconds" ExpiresByType text/javascript "access plus 2592000 seconds" ExpiresByType application/x-javascript "access plus 2592000 seconds" ExpiresByType text/html "access plus 7200 seconds" ExpiresByType application/xhtml+xml "access plus 7200 seconds" </IfModule> # END Expire headers # BEGIN Cache-Control Headers <IfModule mod_headers.c> <FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz)$"> Header set Cache-Control "max-age=2592000, public" </FilesMatch> <FilesMatch "\\.(css)$"> Header set Cache-Control "max-age=2592000, public" </FilesMatch> <FilesMatch "\\.(js)$"> Header set Cache-Control "max-age=2592000, private" </FilesMatch> <filesMatch "\\.(html|htm)$"> Header set Cache-Control "max-age=7200, public" </filesMatch> # Disable caching for scripts and other dynamic files <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> </IfModule> # END Cache-Control Headers
You may pre-gzip everything you reasonably can (7-zip is a good tool for this) & upload it in the same place as the file you just gzipped. Change .htaccess to serve the pre-gzipped files, as below. The caveat here is you need to remember to re-gzip them if/when you update things. This cuts out the CPU overhead, apart from parsing .htaccess.
RewriteEngine on #Check to see if browser can accept gzip files. If so and we have it - serve it! ReWriteCond %{HTTP:accept-encoding} gzip RewriteCond %{HTTP_USER_AGENT} !Safari #make sure there's no trailing .gz on the url ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$ #check to see if a .gz version of the file exists. RewriteCond %{REQUEST_FILENAME}.gz -f #All conditions met so add .gz to URL filename (invisibly) RewriteRule ^(.+) $1.gz [QSA,L]
This is just a raw answer. There are a lot of variations on this theme. I blogged about this and added quite a few references to more in-depth articles at http://icanhazdot.net/2010/03/23/some-wordpress-stuff/. Read that and, more importantly, the references I point to - they are good resources.
Be aware that if you tinker often then users will need to refresh their cache.
A plugin I found very useful too is wp-minify. The thing to watch with this one is that you should exclude page-specific items (contact form, front page slider etc) so you're not re-downloading the whole set of css, JS etc for each page. It is a good way to minify, combine & compress your baseline CSS, JS etc. It cuts down on http requests a lot. Wp-minify plays well with supercache and also with expiry headers that I detailed above.
Use Yslow in Firebug (Firefox) or similar to monitor your http requests and what is and isn't compressed. Have a look at expiry headers in there too. You will soon see what you can improve.
-
Nel casoin cui qualcuno abbiaintenzione di copiare/incollare letue riscritture,c'è un'istanza di "ReWrite" che dovrebbeessere corretta.In case someone plans to copy/paste your Rewrites, there's an instance of "ReWrite" that should be corrected.
- 2
- 2010-12-12
- Jeremy L
-
qualeistanza?which instance?
- 2
- 2010-12-19
- CAD bloke
-
@Nerdling Potrestiindicare qualeistanza deveessere riparata?Vorrei usareil codice sopra.@Nerdling Could you please point out which instance needs fixing? I'd like to use the above code.
- 0
- 2012-12-28
- helgatheviking
-
Potrebbeessere correlato alfatto chemodgzip è deprecatonelle versioni successive di Apache.Ho dovuto cambiareilmioin mod deflate di recente.It may be related to mod gzip being deprecated in later versions of Apache. I had to change mine to mod deflate recently.
- 0
- 2012-12-28
- CAD bloke
-
Questo è unbuon consigliopermigliorare leprestazioni del client,manoninfluisce direttamente sull'utilizzo delle risorse del server daparte di WordPress.This is good advice for improving client performance, but it doesn't directly affect WordPress's use of server resources.
- 0
- 2013-05-02
- sam
-
@Sam - Sì,riduceil carico di richiesteperché Apachepuò servire un 304 (nonmodificato)invece di servire,opotenzialmente chiedere a WordPress digenerare unfile HTML usando PHPper servire.@Sam - Yes it does, it reduces the request load because Apache can serve a 304 (Not modified) instead of serving, or potentially asking WordPress to generate a HTML file using PHP to serve.
- 0
- 2013-05-03
- CAD bloke
-
Per unabuona serie diimpostazionipredefiniteper .htaccess,ilprogetto HTML5 Boilerplatefornisce unmodello. https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccessFor a good set of defaults for .htaccess the HTML5 Boilerplate project provides a template. https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
- 2
- 2014-11-18
- Paul Sheldrake
-
- 2010-08-12
Riduci alminimoilnumero diplug-in cheesegui soloper ciò di cui hai veramentebisogno. Soprattuttoessere consapevoli deiplugin che aggiungono codice JavaScripte CSS a ogni caricamento dellapagina,anche quando quel codicenon viene utilizzatonellapagina.
Se stai creandoiltuotema da zero,scomponiiltuo CSSin modo che lefunzionalità che sononecessarie soloper determinatimodelli dipagina otipi di visualizzazione (articolo singolo,archivi,categoria,ecc.) vengano caricate solo quandonecessario. >
Configura W3TCper utilizzare un CDN (come Amazon CloudFront o uno degli altri supportati da W3TC).
Verifica se le opzioni diminimizzazionefunzionanoperte (alcuniplugingeneranojs/css chenon vengonominimizzatibene,quindi assicurati ditestareiltuo sito dopo aver attivato lafunzione diminimizzazione).
Se haiilpieno controllo deltuo server MySQL,assicurati di aver attivato query_cache. Utilizza uno script di ottimizzazione MySQL pertrovare altrimodiper ottimizzare la configurazione del database.
Se l'utilizzo di un CDN èproblematicoper qualchemotivo,configuramod_expiresnellatua configurazione di apache. Impostai tempi di scadenzafinché ragionevoliperi tipi statici comeimmagini,css,javascript,video,audio,ecc.
Minimize the number of plugins you run to only what you really need. Especially be aware of plugins that add javascript and CSS code on every page load, even when that code isn't being used on the page.
If you are creating your own theme from scratch, break your CSS down so that features that are only need for particular page templates or view types (single post, archives, category, etc) are only loaded when needed.
Configure W3TC to use a CDN (like Amazon CloudFront, or any of the others supported by W3TC).
See if the Minify options work for you (some plugins generate js/css that won't minify nicely, so be sure to test your site after activating the minify feature).
If you have full control of your MySQL server, make sure that you have the query_cache turned on. Use a MySQL tuning script to find other ways to optimize your database config.
If using a CDN is problematic for some reason, configure mod_expires in your apache setup. Set expiration times as long as reasonable for static types like images, css, javascript, video, audio, etc.
-
- 2010-08-12
Esegui memcached e utilizza una cache degli oggettiper ridurreilnumero di query al database.Questomemorizzanella cachei dati dal database,piuttosto che dallepagine.Non sono sicuro che w3-total-cache lofacciagià.
Assicurati dieseguire una cache del codice operativo come APC .(Cene sonomolti altri disponibili.)
Run memcached and use an object cache to reduce the number of database queries. This caches data from the database, rather than pages. Not sure if w3-total-cache already does this.
Make sure you are running an opcode cache like APC. (There are several more available.)
-
APC rende davvero wordpressmoltopiù reattivo,specialmente lepagine di amministrazione.MA,ci sono alcunipotenziali conflitti di configurazionetra WP-SuperCachee APC.Questinon sembranoinfluenzare la cache W3.APC really makes wordpress a lot more responsive, especially the admin pages. BUT, there are some potential configuration conflicts between WP-SuperCache and APC. These don't seem to affect W3 Cache.
- 2
- 2010-08-12
- WhIteSidE
-
C'è uneccellentepost di Mark Jaquith su questo: [APC Object Cache Backendper WordPress] (http://markjaquith.wordpress.com/2010/08/06/apc-object-cache-backend-for-wordpress/).Puoi usare [batcache] (https://wordpress.org/plugins/batcache/)felicemente con APC.There's an excellent post from Mark Jaquith on this:[APC Object Cache Backend for WordPress](http://markjaquith.wordpress.com/2010/08/06/apc-object-cache-backend-for-wordpress/). You can use [batcache](https://wordpress.org/plugins/batcache/) happily with APC.
- 0
- 2014-10-21
- icc97
-
- 2010-08-18
Oltre a utilizzare unplug-inper lamemorizzazionenella cache del disco come wp-cache,collocailtuoblog su un volume host su cui èimpostata laproprietà "noatime". Altrimenti,SSHneltuo host (seiltuo webhost lofornisce)edesegui regolarmente questo comando suituoifile ognipochigiorni:
chattr -R +A ~/*
Il ~/* significa "imiei filenellamia directory home". Puoi cambiare quelpercorso comemeglio credi. Puoi ancheimpostarlo su un cronjobin cpanel seiltuo webhost lofornisce.
Per ulterioriinformazioni sullaproprietà atime,vedere questo . Acceleranotevolmente leprestazioni di lettura del disco di Linux.
A volteiltuo sito vienemartellato dagli spider. Puoi utilizzare uno strumento come SpyderSpanker o Chennai Centralperfiltraregli spider chenon aiutano aportarepiùpage rank sultuo sitoe semplicemente rallentarlo,quindi limitarei buoni spider (come Google,Bing,ecc.) Inviandoli a caso Messaggi HTTP 304nonmodificati.
Un'altra cosa che vedo sono soloplugin scrittimale. Seimpari a creareplug-in,inizi a vedere come alcuniplug-in sono codificatiin modoinefficiente,o addiritturatrovitimebomb,come unatabella di database che si riempiee si riempiee non vienemaipulita,memorizzando cose comei dati di connessionein entrata.
Oltre atutte le altre soluzioni qui,puoi anche creare una webfarm WordPress deltuoblog ospitandola su diversi PC delnodo web che si connettonotutti a un singolo databasee un singolo volume del discoperi file (come un volumemontato su NFS). Dai un'occhiata a Ultra Monkey per scoprire comeprocedere.
In addition to using a disk caching plugin like wp-cache, put your blog on a host volume that has the "noatime" property set on it. Otherwise, SSH into your host (if your webhost provides that) and routinely run this command on your files every few days:
chattr -R +A ~/*
The ~/* means "my files under my home directory". You can change that path as you see fit. You can also set this up on a cron job in cpanel if your webhost provides that.
For more info about atime property, see this. It speeds up Linux disk read performance greatly.
Sometimes your site is being hammered by spiders. You can use a tool like SpyderSpanker or Chennai Central to filter out spiders who don't help bring more page rank to your site and merely slow it down, and then throttle good spiders (like Google, Bing, etc.) by sending them random HTTP 304 Not Modified messages.
Another thing I see is just poorly written plugins. If you learn how to make plugins, you begin to see how some plugins are inefficiently coded, or even find timebombs, such as a database table that fills and fills and never gets cleaned out, storing things such as incoming connection data.
Beyond all the other solutions here, you can also create a WordPress web farm of your blog by hosting it on several web node PCs that all connect back to one single database and one single disk volume for the files (such as a volume mounted over NFS). Check out Ultra Monkey for how to get that all going.
-
- 2010-08-18
Alcune risposte dalla cima dellamiatesta:
1) Riduci alminimoilnumero di richieste HTTP cheilbrowser deveinviare altuo host concatenando JavaScripte CSS dovepossibile/pratico.
2) Trasferisciilpiùpossibileiltuo servizio diimmagini/media a CDN diterzeparti,in particolare se utilizzi l'hosting condiviso.
3) Prova a ridurreilnumero dipost che stai visualizzandoin primapaginaper ridurreiltempo di renderingtotale.
3a) Prova a utilizzare untema chepresenti alcunipostin primopianoperinteroin primapaginae tuttigli altripostmeno recenti comeestratti.
A few answers off the top of my head:
1) Minimize the number of HTTP requests the browser has to make to your host by concatenating JavaScript and CSS where possible/practical.
2) Offload as much of your image/media serving to 3rd party CDNs as possible, particularly if you're using shared hosting.
3) Try reducing the number of posts you're displaying on the front page in order to cut down on total render time.
3a) Try using a theme that presents a few featured posts in full on the front page and all other, older posts as excerpts.
-
+1per la riduzione delnumero dipost,questo dà una spintaenorme senza alcun costo.Lepersonenon hanno davverobisogno di vedere dieci vecchipost,ho soloimpostato lamia conf su otto.+1 for reducing number of posts, this gives a tremendous boost with no cost. People don't really need to see ten old posts, I just set my conf to eight.
- 2
- 2011-04-23
- ripper234
-
- 2012-12-27
Lamemorizzazionenella cache delmenu di WordPressti dà anche un aumento delleprestazioni. Soprattutto se haimoltepagine o una struttura dimenugigante,questo dovrebbeessere considerato.
Falloin 2 semplicipassaggi. In unprimomomento,crea unafunzione che ottiene o creailmenu,invece di chiamare direttamente
wp_nav_menu
.function get_cached_menu( $menuargs ) { if ( !isset( $menuargs['menu'] ) ) { $theme_locations = get_nav_menu_locations(); $nav_menu_selected_id = $theme_locations[$menuargs['theme_location']]; $termslug = get_term_by( 'id', $nav_menu_selected_id, 'nav_menu' ); $transient = 'menu_' . $termslug->slug . '_transient'; } else { $transient = 'menu_' . $menuargs['menu'] . '_transient'; } if ( !get_transient( $transient ) ) { // check if the menu is already cached $menuargs['echo'] = '0'; // set the output to return $this_menu = wp_nav_menu( $menuargs ); // build the menu with the given $menuargs echo $this_menu; // output the menu for this run set_transient( $transient, $this_menu ); // set the transient, where the build HTML is saved } else { echo get_transient( $transient ); // just output the cached version } }
Neltuotema,sostituiscii
wp_nav_menu
conget_cached_menu
. Ora,ogni volta che viene chiamatoilmenu,hai una Databasequeryinvece dell'intero Menubuilding.Imenunon cambiano spesso,ma devi anche agganciarti all'azione
wp_update_nav_menu
pereliminarei vecchitransitori.Falloin questomodo:
add_action('wp_update_nav_menu', 'my_delete_menu_transients'); function my_delete_menu_transients($nav_menu_selected_id) { $termslug = get_term_by( 'id', $nav_menu_selected_id, 'nav_menu' ); $transient = 'menu_' . $termslug->slug . '_transient'; delete_transient( $transient ); }
Ilmenu verràgenerato laprossima volta che viene richiamata lapaginae utilizza la versionememorizzatanella cachefinché qualcunonon aggiornanuovamenteilmenu.
Versione aggiornata
Grazie @helgathevikingper aver segnalato unerroretra sluge ID. Ho aggiornato lefunzioniin modo chefunzioni sia con
theme_position
che conmenu
(per una chiamata diretta delmenu).Imenu vengono sempre salvati conilnome delmenu,non laposizioneneltema.
Caching the WordPress Menu also gives you a performance boost. Especially if you have a lot of Pages or a giant Menu Structure, this should be considered.
Do it in 2 easy steps. At first, create a function that gets or creates the menu, instead of calling
wp_nav_menu
directly.function get_cached_menu( $menuargs ) { if ( !isset( $menuargs['menu'] ) ) { $theme_locations = get_nav_menu_locations(); $nav_menu_selected_id = $theme_locations[$menuargs['theme_location']]; $termslug = get_term_by( 'id', $nav_menu_selected_id, 'nav_menu' ); $transient = 'menu_' . $termslug->slug . '_transient'; } else { $transient = 'menu_' . $menuargs['menu'] . '_transient'; } if ( !get_transient( $transient ) ) { // check if the menu is already cached $menuargs['echo'] = '0'; // set the output to return $this_menu = wp_nav_menu( $menuargs ); // build the menu with the given $menuargs echo $this_menu; // output the menu for this run set_transient( $transient, $this_menu ); // set the transient, where the build HTML is saved } else { echo get_transient( $transient ); // just output the cached version } }
In your theme, replace the
wp_nav_menu
s withget_cached_menu
. Now, everytime the menu is called, you have one Databasequery instead of the whole Menubuilding.Menus don't change often - but you also have to hook into the
wp_update_nav_menu
action to delete the old transients.Do it like this:
add_action('wp_update_nav_menu', 'my_delete_menu_transients'); function my_delete_menu_transients($nav_menu_selected_id) { $termslug = get_term_by( 'id', $nav_menu_selected_id, 'nav_menu' ); $transient = 'menu_' . $termslug->slug . '_transient'; delete_transient( $transient ); }
The Menu will be generated the next time the page is called - and use the cached version until someone updates the menu again.
Updated Version
Thanks @helgatheviking for pointing out a mistake between slugs and IDs. I updated the functions so it works both with
theme_position
andmenu
(for a direct call of the menu).The menus are always saved with the name of the Menu, not the position in the Theme.
-
Sembra un'idea davverointeressante.Tuttavia,ho unproblema conil codice.Quandoeliminiamoiltransitorio,`$nav_menu_selected_id` è unnumero,mentre quando si chiama`get_cached_menu () `il`menu_id` è una variabile stringa,perché quelparametro diventa l'ID CSSper `
- `elemento.
This seems like a really cool idea. I'm having a problem with the code however. When we're clearing out the transient, the `$nav_menu_selected_id` is a number, while when calling the `get_cached_menu()` the `menu_id` is a string variable, because that parameter becomes the CSS ID for the `- ` element.
- 0
- 2012-12-28
- helgatheviking
-
- 2010-08-18
Utilizza una classe di databasetagliataper l'ottimizzazione.Abbiamofattobuoneesperienze conil codiceper ridurre l'utilizzo dellamemoriae la velocità di accesso al database.Oltre a ciò,puoi ottimizzare la struttura del database stesso con alcunepiccolemodifiche chefanno anchemolto.
Parte del codice della classe del databasepuòesseretrovataneltrac di wordpress,non èentratonel core ( Biglietton. 11799e correlati ).
Use a database class that is trimmed for optimization. We made good experiences with own code to reduce memory usage and database access speed. Next to that, you can optimize the database structure itself by some small changes that do a lot as well.
Part of the database class code can be found in the wordpress trac, it did not made it into core (Ticket #11799 and related).
-
Soluzioneinteressante.Ecco l'URL delbiglietto Tracnel caso anche qualcuno siainteressato: http://core.trac.wordpress.org/ticket/11799Interesting solution. Here's the URL to the Trac Ticket in case anyone's interested too: http://core.trac.wordpress.org/ticket/11799
- 0
- 2010-08-18
- Mike Lee
-
- 2011-04-15
Per un sito ad altotraffico,dovresti ottimizzaretuttii buffer di MySQLperil contenuto che è ora aposto. Indipendentemente dalla versione di WordPress,il Il livello MySQLpuò avere la sua configurazione calcolata .
Infatti,se hai dati InnoDB senza abilitareinnodb_file_per_table, devipulire InnoDB segmentando ognitabellanelpropriotablespacefisico . Èpossibileeseguire unamessa apunto MySQL decente anche se si dispone di un hardware limitato . Ci sono molti scenari dafaretali ottimizzazioni InnoDB .
IMHO,nonpuoipianificarebuoneimpostazionipermy.cnf senza conoscere la quantità di datiper cui configurare. Dovresti caricareperiodicamente un set di dati corrente dallaproduzionein un ambiente di staging,eseguire le ottimizzazionie ottenerei numeri da configurarenelmy.cnf del server diproduzione.
For a highly trafficked site, you should tune all MySQL buffers for the content that is in place now. Regardless of the version of WordPress, the MySQL layer can have its configuration computed.
In fact, if you have InnoDB data without enabling innodb_file_per_table, you need to cleanup InnoDB by segmenting each table into its own physical tablespace. It is possible to do decent MySQL tuning even if you have a limited hardware. There are many scenarios for doing such InnoDB optimizations.
IMHO, you cannot plan good settings for my.cnf without knowing the amount of data to configure for. You would have to periodically load a current dataset from production into a staging environment, perform optimizations and come away with the numbers to configure in the my.cnf of the production server.
-
- 2010-08-12
potresti abilitare la compressione dell'output globale.questogziperàtutto ciò cheesce automaticamente seilbrowser lo supporta.Ciò riduce drasticamente la dimensione deifiletrasferiti,ma aumentail carico della CPU.
you could enable global output compression. this will gzip everything going out automatically if the browser supports it. This drastically reduces the size of files transferred, but does increase your CPU load.
-
Questotenderà afar "sentire"iltuo sitomoltopiù lento.Yahoo!i documentitecnici suggeriscono di scaricareil codice subito dopo lafine di heade prima dell'inizio delbody,in modo chegli scripte gli stilipossanoiniziare a caricarsi.Bufferando l'interapagina,siimpedisce che ciò accada,e così lapagina "sembra" lentaperché l'utente deve attendere che WordPresseseguail rendering dell'interapaginaprima che l'utente veda qualcosa.This will tend to make your site "feel" much slower. The Yahoo! technical documents suggest flushing you code right after the end of head and before the beginning of body so that scripts and styles can start loading. By buffering the entire page, you prevent this from happening, and so the page "feels" slow because the user has to wait for WordPress to render the entire page before the user sees anything.
- 0
- 2010-08-12
- WhIteSidE
-
Scottnon stavaparlando delbuffering dell'interapaginama dell'utilizzo della compressione dell'output di Apache.È qualcosa di diverso,solo se usi la compressione dell'output PHPtramiteilbuffer di output,ciò avrebbe le carenze che descrivi vagamente.Manon diper sé comunqueperché allafine,ilbuffering dell'outputpuò rendere le cosepiù veloci.Questo ha qualcosa a chefare con l'I/O sultuo server.Scott was not speaking about buffering the whole page but using apache output compression. That's something different, only if you use the PHP output compression via the output buffer this would have the deficiencies you describe vaguely. But not per-se anyway because in the end, buffering output can make things faster. This has something to do with I/O on your server.
- 0
- 2010-08-18
- hakre
-
- 2010-08-19
Di recente hoparlato di questo argomento a WordCamp Houston . Tuttii consigli di cui sopra sono ottimie l'importante è assicurarsi chetuttoilmateriale delfront-end sia completamente ottimizzato,quindipuoiiniziare a lavorare sul cachinge suiproblemi diprestazioni del server.
Il renderingprogressivo renderà letuepaginepiù velociperché l'utente vedràil contenuto dellapaginaprima che sia completamente caricato. Perfare ciò,assicurati che qualsiasijs diblocco siain fondo allapaginae css siain alto.
Inoltre,se utilizzimoltipulsanti dei socialmedia,puoipersonalizzaregli scriptper caricarliin uniframe dopo che lapagina è stata caricata completamente. Ho scritto untutorial su comefarlo conilpulsante TweetMeMe retweet (ora obsoleto da quando Twitter ha rilasciatoilpropriopulsante retweet)mapuò ancoraessere applicato ad altripulsanti di condivisione.
Per leprestazioni del server,guarda Nginx comeproxyfront-endper contenuti statici con Apache chegestisceilpesante sollevamento di PHPe MySQL.
I recently spoke about this subject at WordCamp Houston. All of the above recommendations are great and the important thing is to make sure all the front end stuff is fully optimized then you can start working on the caching and server performance issues.
Progressive rendering will make your pages feel faster because the user will see the page content before it is fully loaded. To do this make sure any blocking js is at the very bottom of the page and css is at the top.
Also if you use a lot of social media buttons you can customize the scripts to make them load in an iframe after the page is fully loaded. I wrote a tutorial on how to do it with the TweetMeMe re tweet button (now obsolete since Twitter released their own retweet button) but can still be applied to other share buttons.
For server performance look into Nginx as a front end proxy for static content with Apache handling the heavy PHP and MySQL lifting.
-
- 2010-11-23
Poichénessuno lo ha ancoramenzionato,uno deipassaggipiùimportantipermigliorare leprestazioni del serverin combinazione con qualsiasi configurazione di LAMP sarebbepassare a apache workerthreade mod_fcgid.
Questo ha liberato 500 MB dimemoria sulmio serverprivato virtuale.
Since nobody mentioned it yet, one of the most important steps to enhance server performance in conjunction with any LAMP setup would be to switch to apache worker thread and mod_fcgid.
This freed up 500MB of memory on my virtual private server.
-
L'hogiàprovato,manon sonomai riuscito afarfunzionare un ambiente Apache worker +fcgi stabile.Se qualcuno conosce alcune *buone *istruzioni di configurazioneper questo sotto Ubuntu,perfavorepubblicale.Sareiparticolarmentegratoper leistruzioni che descrivonoin dettaglio alcune delle direttive di configurazione di Apache cheinfluenzanoil comportamento di FCGIe spiegherei comemodificarlepotrebbeinfluire sull'utilizzo dellamemoria,sulleprestazioni,ecc. Attualmente sto usando un apachebiforcuto con unfrontalinonginx-nel server cacheproxy.I've tried this before, but I've never been able to get a stable apache worker + fcgi environment running. If anybody knows of some *good* setup instructions for this under Ubuntu, please post them. I'd especially be grateful for instructions that detail some of the Apache config directives that affect the FCGI behavior, and explain how tweaking them might affect memory usage, performance, etc. Currently, I'm using a forked apache with an nginx front-in proxy cache server.
- 0
- 2011-02-28
- Dougal Campbell
-
Definisci stabile.Lamiainstallazionefunzionain modomolto stabile,ma avrestibisogno di 2 GB di RAMnellamia configurazione.Devi solo leggeree modificare.La documentazione di apache sufcgi è abbastanza ampia.Define stable. My installation is running very stable, but you would need 2GB of RAM in my config. You just have to read and tweak. apache's documentation on fcgi is fairly extensive.
- 0
- 2011-03-09
- superfields
-
prova a controllare http://www.virtualmin.com/èmolto stabilee gratuitotry to check http://www.virtualmin.com/ its very stable and free
- 3
- 2011-09-11
- Ünsal Korkmaz
-
- 2014-10-21
Guidaper controllareil rallentamento delplugin
C'è unpluginmeravigliosamente semplice chiamato Tempo di caricamento dellapagina ,che aggiunge untimer alpiè dipagina dellapagina. In realtà sono solo quattro righe di codice:
& lt;?php funzione ur_pageload_footer () { printf (__ ('Paginain% s secondi','pageload'),timer_stop ()); } add_action ('wp_footer','ur_pageload_footer')
Quindi:
- Crea unfoglio di lavoro
- Elencatuttii tuoiplug-in attivie inseriscili
- Aggiorna lapaginatre volte annotandoiltempo di caricamento dellapagina ogni volta
- Passain rassegnai tuoiplugin unoper uno disattivandoli
- Ripetiil passaggio 3
- Prendinota dell'ordinein cui hai disattivatoi plug-in
Iltuofoglio di lavoro dovrebbe avere un aspetto simile a
+ ------- + ------- + ------- + ------- + -------- + | Esegui 1| Esegui 2| Esegui 3| Ordine| Plugin| Quindi,se dopo aver disattivato unpluginiltempo di risposta dellapagina aumentain modo significativo,puoi vedere sepuoievitare quelplugin.
Hotrovato dueplug-in che hanno causato un rallentamento "significativo" mqtranslate e (ilpiuttosto vecchiomabuono ) Plugin dinavigazionemultilivello .
Guide for checking plugin slow down
There's a beautifully simple plugin called Page Load Time, which adds timer to your page footer. Its actually only four lines of code:
<?php function ur_pageload_footer() { printf(__('Page in %s seconds', 'pageload'), timer_stop()); } add_action('wp_footer', 'ur_pageload_footer')
Then:
- Create a spreadsheet
- List out all your active plugins and put them in there
- Refresh the page three times noting the page load time each turn
- Go through your plugins one by one deactivating them
- Repeat step 3
- Note the order that you deactivated the plugins
Your spreadsheet should look something like
+-------+-------+-------+-------+--------+ | Run 1 | Run 2 | Run 3 | Order | Plugin |
So if after deactivating a plugin the page response time increases significanly then you can see if you can avoid that plugin.
I found two plugins that caused 'significant' slow down mqtranslate and (the rather old but good) Multi-level Navigation Plugin.
-
Sarebbe davverobello automatizzare questoprocesso conphantomjse selenio (o qualcosa di simile)in modo che vengaeseguito automaticamentee allafine sputa unpiccolo rapporto.It would be really cool to automate this process is phantomjs and selenium(or something similar) so it runs automatically and spits out a little report at the end.
- 0
- 2014-11-18
- Paul Sheldrake
-
- 2016-11-16
Usailplug-in W3 Total Cache per lafunzionalità dimemorizzazionenella cachein WordPress. Abilitail caching dellapaginae il caching del database dallapagina delleimpostazioni delplugin. Assicurati di scegliere "Cache PHP alternativa (APC/APCu)" comemeccanismo dimemorizzazionenella cache. NON abilitare alcunaminimizzazionein W3 Total Cachepoiché ci sonomoltepossibilitàperte di rompere l'aspettoe/o lafunzionalità deltuo sito. Lo lasceremo a Cloudflare.
Dopo aver configuratoil resto dellefunzionalità delplugin,configura Cloudflareperiltuo sito web. Assicurati di abilitare Cloudflare anchenelleimpostazioni di W3 Total Cachein "Estensioni".
Cloudflare è un Content Delivery Network chememorizzanella cachetuttii contenuti statici (fileimmagine,CSS,JS,documenti,ecc.) daltuo sitoe li serve aituoi visitatori dai loro serverglobali. Questopuò aiutare ad accelerarei tempi di caricamento dellapaginae ridurreil carico sultuo server. Per unelenco deitipi difilememorizzatinella cache da Cloudlfare,controlla questoelenco . Inoltre,Cloudflare ha unpianogratuito.
In Cloudflare,impostail livello dimemorizzazionenella cache su standarde imposta la scadenza della cache delbrowser su qualcosa di almenomaggiore di 20 ore. Abilita Always Online ™in modo che,anche seiltuo servernonfunziona,Cloudflare servirà lepagine statiche deltuo sito web dalla cache. Abilita anche la lorofunzione diminimizzazione automatica (ricordaperchéti ho chiesto dinon abilitare laminificazione è W3 Total Cache? Perché Cloudflare lofameglio!) Quindiimposta Rocket Loader ™ su automatico.
Ecco unestratto di ciò chefa Rocket Loader:
-
Diminuzione delnumero di richieste di rete raggruppando JavaScript file,anche risorse diterzeparti,perevitare di rallentare lapagina rendering.
-
Caricamento asincrono di script,inclusi script diterzeparti,quindi
chenonbloccanoil caricamento del contenuto dellatuapagina
immediatamente. -
Memorizzazionenella cache degli scriptin locale (utilizzando LocalStorage,disponibilenellamaggiorparte dei
browsere smartphone)in modo chenon vengano recuperati dinuovo ameno che
necessario.
Ulterioriinformazioni sono disponibili qui .
Sepossibile,passa alframework Genesisper WordPressperché sonopuliti senza alcun ingombro. Genesis è stato creatopensando alla velocitàe alla SEO. Io stesso l'hotestatoe imiei punteggi PageSpeed eranobuoni. Inoltre,se stai usando Genesis,non dimenticare di abilitare la cache deiframmentinelleimpostazioni di W3 Total Cache.
Poiché ora utilizzi Cloudlfare come CDN,puoi utilizzare unplug-in come " Imagify " o " Comprimi JPEG & amp; Immagini PNG 'di TingPNGper comprimere letueimmagini. Entrambi sonoplugingratuiti disponibilinel repository deiplugin di WordPress.org. Inoltre,Imagify supportailpotente algoritmo di compressione conperdita di dati.
Infine,installailplug-in " Remove Query Strings From Static Resources " dal repository di WordPressin modo che rimuova le stringhe di query da risorse statiche come CSS & amp; File JS. Questoperché le risorse con un "?" o "& amp;"nell'URLnon vengonomemorizzatinella cache da alcuni server di cacheproxy (ricorda,Cloudflare è anche un server di cacheproxy).
Quindiinstallailplug-in " Usa Google Libraries ". Questoplug-in consente altuo sito WordPress di utilizzare la CDN dell'API della libreria AJAX di Googleinvece di servire questifile direttamente dallatuainstallazione di WordPress.
Alcuni dei vantaggi sono:
- Aumenta lepossibilità che un utente abbiagià questifilememorizzatinella cache.
- Eliminail carico aggiuntivo daltuo server.
- Utilizza versioni compresse delle librerie (se disponibili).
- I server di Google sono configuratipernegoziare la compressione HTTP con richiesta delbrowser.
Ultimomanonmenoimportante,utilizzailplug-in " WP-Optimize " di Ruhani Rabinperpuliree ottimizzareiltuo database.
Spero che questo risponda allatua domanda riguardo all'ottimizzazione di WordPressper ridurreil carico del server.
Stick with the W3 Total Cache plugin for caching functionality in WordPress. Enable page caching and database caching from the plugin's settings page. Make sure you choose 'Alternative PHP Cache (APC / APCu)' as the caching mechanism. Do NOT enable any minification in W3 Total Cache as there are many chances for you to break your site's appearance and/or functionality. We'll leave it to Cloudflare.
Once you're done with configuring the rest of the plugin functionalities, set up Cloudflare for your website. Make sure you enable Cloudflare in the W3 Total Cache settings too under 'Extensions'.
Cloudflare is a Content Delivery Network which caches all the static contents (image files,CSS,JS,documents,etc.,) from your site and serves it to your visitors from their global servers. This can help speed up page load times and reduce the load on your server. For a list of file types that are cached by Cloudlfare checkout this list. Moreover, Cloudflare has a free plan.
In Cloudflare, set caching level to standard and set browser cache expiration to something at least greater than 20 hours. Enable Always Online™ so that even if your server goes down, Cloudflare will serve your website's static pages from their cache. Also enable their auto minify feature (remember why I asked you to not enable minification is W3 Total Cache? Because Cloudflare does it better!) Then set Rocket Loader™ to automatic.
Here's an excerpt of what Rocket Loader does :
Decreasing the number of network requests by bundling JavaScript files, even third party resources, to avoid slowing down page rendering.
Asynchronously loading scripts, including third party scripts, so
that they do not block the content of your page from loading
immediately.Caching scripts locally (using LocalStorage, available on most
browsers and smart phones) so they aren't re-fetched unless
necessary.
More information can be found here.
If possible switch to the Genesis framework for WordPress because they are clean without any bloat. Genesis was built with speed and SEO in mind. I myself have tested it and my PageSpeed scores were good. Also if you're using Genesis, then don't forget to enable fragment cache in W3 Total Cache settings.
Since now you're using Cloudlfare as a CDN, you can make use of a plugin like 'Imagify' or 'Compress JPEG & PNG images' by TingPNG to compress your images. Both are free plugins available in the WordPress.org plugin repository. Also, Imagify supports the powerful lossy compression algorithm.
Finally, install 'Remove Query Strings From Static Resources' plugin from the WordPress repository so that it removes the query strings from static resources like CSS & JS files. This is because resources with a “?” or “&” in the URL are not cached by some proxy caching servers (remember, Cloudflare is also a proxy caching server).
Then install 'Use Google Libraries' plugin. This plugin allows your WordPress site to use Google's AJAX Library API CDN rather than serving these files from your WordPress install directly.
Some of the benefits are:
- Increases the chance that a user already has these files cached.
- Takes the extra load off your server.
- Uses compressed versions of the libraries (when available).
- Google's servers are set up to negotiate HTTP compression with the requesting browser.
Last but not the least, use the 'WP-Optimize' plugin by Ruhani Rabin to clean and optimize your database.
Hope this answers your question with regard to optimizing WordPress to reduce server load.
Oltre ainstallare W3 Total Cache o un altroplug-in dimemorizzazionenella cache,qualipassaggipossoeseguireper assicurarmi cheilmiotemae ilmio sito venganoeseguitiilpiù velocementepossibile.