Ik was op zoek naar een oplossing om mijn site te optimaliseren, op een zeer goedkope manier. Vaak is een Content Delivery Network een goede oplossing, maar niet goedkoop, dus ik gebruikte Google App Engine als een CDN met Ubuntu.
Dingen zoals stylesheets, afbeeldingen en video's zijn vaak de grootste hit van een webserver wanneer een webpagina wordt geladen. Het is bewezen dat het laden van deze items vanuit verschillende domeinen de browser helpt bij multi-tasking, omdat het niet hoeft te wachten totdat Asset 1 op het domein example.com is geladen om Asset 2 te gaan downloaden in hetzelfde domein. Er zijn een aantal benaderingen en in deze tutorial zullen we er drie van analyseren.
De meeste mensen maken eenvoudig subdomeinen zoals "images.domain.com", "styles.domain.com" enzovoort. De assets worden vervolgens vanuit de subdomeinen gebeld, dus de browser 'denkt' dat het van een andere locatie komt, terwijl ze in werkelijkheid gewoonlijk altijd dezelfde structuur targeten.
Deze aanpak is nuttig en er is een merkbaar verschil in laadtijden. Een nadeel is dat je nog steeds je webserver raakt, en nu nog moeilijker, omdat je er meerdere verbindingen tegelijkertijd mee maakt. Als u afbeeldingen of kleine bestanden laadt, is dat in orde, maar de zaken worden lelijker als u probeert video's of zwaardere bestanden te laden; en ook, vooral voor goedkope hosting, is het niet altijd mogelijk om subdomeinen aan te maken.
Dit bestaat uit het hebben van een tweede webserver om alleen assets te laden terwijl je hoofdwebserver met de andere calls omgaat. U hebt twee webservers die twee verschillende poorten gebruiken. De belangrijkste webserver is degene die verantwoordelijk is voor alle verzoeken, maar zal elke activacall doorsturen naar uw tweede webserver. Wat mensen hier normaal doen, is het gebruik van twee verschillende soorten webservers. Meestal Apache (als de belangrijkste webserver) en lighttpd als de secundaire webserver.
Het concept is erg mooi, maar het betekent ook dat je nu twee webservers moet onderhouden. De tweede (lighttpd) zou eigenlijk een eenmalige moeten zijn, omdat deze, eenmaal geconfigureerd, alleen maar statische inhoud dient. Toch zijn het twee webservers op uw server en als er iets misgaat, is het een beetje moeilijk om problemen op te lossen.
Eigenlijk bestaat het uit het hosten van uw bezittingen ergens anders, waar u de prestaties niet hoeft te handhaven of in het oog te houden, omdat de primaire taak van deze server het aanbieden van statische inhoud is. Deze hemel wordt "Cloud computing"en het is op dit moment een" buzz-word ": het bestaat in feite uit een netwerk van servers op strategische plaatsen, we noemen het strategische plaatsen, omdat de servers zich in de buurt van u bevinden. Welnu, niet bij u in de buurt, maar vanaf uw IP-adres leidt u om naar de dichtstbijzijnde server, vanwaar u de assets gaat ophalen zoals ze nodig zijn.
Het werkt vrijwel als een load-balancer, maar op basis van locatie in plaats van het aantal verbindingen. Het zorgt ervoor dat de bits de kortste afstand afleggen om bij u te komen. Met andere woorden, als u in Italië bent (zoals ik), waarom zou u dan moeten wachten tot de gegevens uit de VS komen, als er een server naast u is. Er zijn enkele bedrijven die CDN tegen een zeer redelijke prijs aanbieden, maar vandaag gaan we het hebben gratis spullen!
Voordat ik met deze tutorial begin, moet ik duidelijk maken dat de vorm van CDN die we hier gaan gebruiken, niet echt CDN is, omdat het geen erg hoge schaalbaarheid biedt en niet is ontwikkeld voor het enige doel van het dienen van statische bestanden. Dit betekent dat het niet dezelfde hoge prestaties zal hebben als een service die specifiek voor deze taak is bedoeld. Voor sommigen (zoals ikzelf) maakt het niet zo'n groot verschil, omdat deze methode nog steeds beter is dan niets, en enorm veel sneller is dan veel servers in de buurt. Ook voor de meeste mensen die Hostingbedrijven gebruiken en beperkte bandbreedte hebben, is dit een enorme verbetering.
Maak een Google-account. Als je een Gmail-account hebt die dat zal doen. Ik zal het niet in detail uitleggen, maar bezoek hier om er een te maken. Meld u aan voor een Google App Engine-toepassing. En nu…
Meld u aan bij uw zojuist gemaakte App Engine-account en klik op de knop Een applicatie maken, ik heb de mijne "mijnnewcdn" genoemd. Ik gebruik Python met Ubuntu (maar sommige stappen zijn hetzelfde voor Windows-gebruikers) dus:
Met de standaardinstallatie van Ubuntu is de interpreter van Python al in het systeem aanwezig. Installeer anders gewoon Python. Als je Windows-gebruikers bent, kun je Python downloaden van Python.org.
Download de nieuwste Google App Engine SDK voor Python (momenteel op 1.5.5);
Maak een map met de naam Projecten en pak Google App Engine SDK voor Python hierin uit
fabrizio @ fabrix: ~ / Projecten $ unzip google_appengine_1.5.5.zip fabrizio @ fabrix: ~ / Projecten $ cd google_appengine fabrizio @ fabrix: ~ / Projects / google_appengine $ mkdir mynewcdn
en nu zou je dit moeten hebben (de naam van de map MOET hetzelfde zijn als de naam van de applicatie)
fabrizio @ fabrix: ~ / Projects / google_appengine $ ls appcfg.py dev_appserver.py mijnnewcdn tools BUGS gen_protorpc.py nieuw_project_template VERSION bulkload_client.py google README bulkloader.py lib RELEASE_NOTES demo's LICENTIE remote_api_shell.py
Nu in je map (voor mij mynewcdn) moet u alle mappen kopiëren met de statische inhoud van uw website (bijvoorbeeld de map / Wp-content / uploads /). In mijn geval heb ik een map erin gemaakt mynewcdn riep fdicarlo met alle gegevens. In een map met de naam van de toepassing die u hebt gemaakt, maakt u een bestand app.yaml. De inhoud van dit bestand zou er als volgt uit moeten zien:
toepassing: mynewcdn versie: 1 runtime: python api_version: 1 handlers: - url: / fdicarlo static_dir: fdicarlo threadafe: true
Natuurlijk moet je het vervangen mynewcdn met de naam van uw aanvraag en fdicarlo met de naam van de map van uw statische inhoud. U vindt meer informatie over het app.yaml-bestand op de pagina Python-configuratie van de toepassing. Nu ziet de situatie er als volgt uit:
fabrizio @ fabrix: ~ / Projects / google_appengine / mynewcdn $ ls app.yaml fdicarlo
En nu:
fabrizio @ fabrix: ~ / Projects / google_appengine / mynewcdn $ cd ... fabrizio @ fabrix: ~ / Projects / google_appengine $ python appcfg.py update mynewcdn
Zodra de upload is voltooid, is uw CDN gereed op het adres nameofapp.appspot.com, de mijne is bijvoorbeeld http://mynewcdn.appspot.com/fdicarlo. Om te controleren of het CDN correct werkt, probeert u enkele afbeeldingen en / of bestanden van het CDN te bekijken.
Wanneer u de instantie in de Google-app-engine heeft gemaakt en de URL van de app hebt, hoeft u alleen nog maar de instellingen toe te voegen aan de instellingen in WP Super Cache en te testen hoe de pagina werkt. Als je ergens in die stappen het gevoel hebt dat er niets aan de hand is, probeer dan je pagina's in de cache te wissen uit de geactiveerde cache, in het andere tabblad genaamd "Inhoud" en sla de instellingen op. Ik heb WP Super Cache gebruikt omdat het nuttig (en krachtig) is ook voor de cache, maar je kunt andere plug-ins gebruiken zoals CDN linker en de stappen zijn vergelijkbaar.
In het veld "Off-site URL" plaats ik http://mynewcdn.appspot.com/fdicarlo. Natuurlijk moet je het vervangen mynewcdn en fdicarlo met jouw naam.
In het veld "Include dirs" heb ik wp-content geplaatst.
En in het laatste veld "Uitsluiten als substring" stel ik voor dat u "php" invoegt om php-bestanden uit te sluiten. Stel uw parameters in zoals u wilt, opslaan en nu heeft u uw CDN geconfigureerd. Wanneer u nu afbeeldingen of andere gegevens in WordPress toevoegt, moet u ook naar de lokale map kopiëren en alles bijwerken met:
fabrizio @ fabrix: ~ / Projects / google_appengine $ python appcfg.py update mynewcdn
Ik hoop dat dit iemand heeft geholpen bij het maken en gebruiken van Google CDN. Het gebruik van een CDN is slechts een aspect van SEO en een trage uitvoering wordt vaak veroorzaakt door vele factoren. Als je een CDN gebruikt, verkleint en in cache zet, kun je goede verbeteringen aanbrengen aan je blog, dus er is echt geen reden om ze niet te proberen.