Spørgsmål og svar

Tilbage
Ydeevne - hvordan kan jeg forbedre den?
Her er en oppsummering af flere måder at bedre ydelsen på nettsteder som ligger på vores webservere.

Generelle tips

  • Brug små filer. Ikke alle har tip-top Internet-forbindelse. Selv når ting går fort for dig, så må det gå trægt for andre.
  • Ikke brug WIDTH- og HEJGHT-attributtene for IMG SRC til at ændre størrelsen på dine billeder. Lag istedenfor småbilleder på forhånd, og brug A HREF til at lænke til det større billedet hvis du vil, at dine besøgende skal se det.
  • Test visningshastighed med en netbook (lille, træg laptop).
  • Test visningshastighed med en mobiltelefon uden højhastighedsnet.
  • Husk, at Flash og PDF ofte er brugt til spredning af virus, spionprogramvare og anden skadelig programvare, og i tillæg må være tyngre at laste for din besøgendes netlæser, specielt for små og håndholdte dingser. Brug HTML og CSS istedenfor.
  • Minimaliser brugen af eksternt indhold (billeder, annonser, Flash, filmer, osv.). "Eksternt" betyder indhold du henter/laster fra andre steder på nettet for visning på din webside.
  • Tillæg, utvidelser, moduler, stiltemaer, plugins o.l. (add-ons, extensions, modules, themes, plugins) må gøre websidene dine tregere. Nogle programmer, f.ex. Joomla, bliver tregere bare ved, at disse er installeret, selv om de ikke er aktiveret.

Værktøj på egen datamaskin

Alle som jobber med ydelse på websider bør teste sine nettsteder med flere forskellige netlæsere, og gerne med mobiltelefon tilkoblet med mobildata (ikke WLAN). Følgende netlæsere bør testes på egen datamaskin:

  • Firefox (Linux, Mac, Windows)
  • Google Chrome (Linux, Mac, Windows)
  • Internet Explorer (Windows)
  • Opera (Linux, Mac, Windows)
  • Safari (Mac, Windows)

Til testingen anbefaler vi, at du bruger netlæsertillegg som lar dig se på ressourcebrugen. Google Chrome (View->Developer->Developer Tools), Opera (Tools->Advanced->Opera Dragonfly) og Safari (Develop->Show Web Inspector) kommer med sådanne tillæg indebygget, men du må blive nødt til at aktivere disse specifikt. Tjek dokumentationen.

Til Firefox anbefaler vi, at man bruger begge følgende tillæg:

PHP og CGI i lenker og includes

Når vi skriver om PHP i punktene nedenfor, så gælder principene også for CGI, siden virkemåden er tilsvarende.

På vores webservere kører PHP som CGI under suphp. PHP-websider og -script kører derfor som separate prosesser for hver forespørsel via web, med din Unix-brugers (FTP-brugernavns) rettigheder. Disse prosessene afsluttes når websiden er ferdig lastet, og hverken koden eller resultatet gemmes i webserveren.

Dette medfører acceptabel sikkerhed, men ofrer lidt ydelse. Du bør derfor undgå nogle typiske programmeringsteknikker for "akseleration" og "caching" gennem PHP, der simpelthen ikke fungerer. I verste fall må du støte på webserverens selvforsvarsmekanisme, der trår til når websidene prøver at laste for mange samtidige elementer, sider og script.

  1. Billeder bør altid lastes statisk med
    <IMG SRC="/mappe/med/billede_4711.png">
    og ikke via et PHP-/CGI-script, f.ex.
    <IMG SRC="/mappe/med/billede_viser.php?billede=4711.png">
    Tilsvarende: lag småbilleder på forhånd når du laster originalene op til serveren, ikke generer de hver gang de skal vises frem.
  2. CSS og JavaScript bør af samme grunder også lastes fra statiske filer, ikke PHP.
  3. Komprimering af indhold bør gøres før det lastes op til serveren, ikke via PHP. Hvis du kender til hvordan du skrur på og bruger ob_gzhandler, så er det et undtag fra reglen.
  4. Ikke mellomlagre (cache) indhold i PHP-filer, gem heller til statisk HTML.

    Bra:
    <a href="/cache/1/1a/1a23bsadf.html">Cached dokument</a>
    Også bra: cache informationen i MySQL-databasen din.

    Dårlig:
    <a href="/cache/1/1a/1a23bsadf.php">Cached dokument</a>
  5. Ikke brug include(), include_once(), require() eller require_once() med absolutte URLer. Brug relative referencer istedenfor.

    Bra kode:
    include("/includes/myinclude.php")
    Dårlig kode:
    include("http://www.example.com/includes/myinclude.php")
    Det ovenstående starter en ny PHP-prosess for hver include(), og vil gøre, at dine websider går vesentlig tregere.
  6. Forsøg at undgå brug af cookies og sesioner der du ikke skal have de. Det gør, at vores servere må mellomlagre statisk information fra en bruger til næste.

Databasebrug

  • Koble dig til databasen max en gang per sidevisning.
  • Specifiser de kolonnerne du trenger data fra, f.ex.:
    SELECT etternavn, fornavn, sted FROM folk;
    Undgå den generelle
    SELECT * FROM folk;
    hvis du ikke trenger alle kolonnerne.
  • Tabeller som opdateres og spørges ofte vil kunde gå trægt med MyISAM-motoren, vurder at bytte til InnoDB:
    ALTER TABLE folk ENGINE indodb;
  • Tabeller hvor det har været slettet ganske meget data, eller udført meget ændringer i felter af typen varchar, varbinary, blob eller text, bør regelmæssig optimaliseres. For tabellen "folk" må det gøres med denne SQL-kommandoen:
    OPTIMIZE TABLE folk;
  • Se også MySQL-dokumentationens kapittel om optimalisering. Husk, at du ikke må gøre ting som kræver systemtilgang eller SUPER-privilegier.

WordPress

Ikke brug TimThumb eller liknende løsninger for billeder, de byder med første punkt i listen ovenfor ("PHP og CGI i lenker og includes"). WordPress-udviklere anbefaler at bruge indebygde funktioner for thumbnails, der også har flere funktionelle fordeler sammenliknet med TimThumb o.l.

For Wordpress med meget trafik eller store websider bør du evt. vurdere utvidelsen WP Super Cache. Det er svært vigtig, at denne konfigureres til at bruge metode 1, mod_rewrite. Metode 2 og 3 forbedrer ikke ydelsen på webhotel hos os.

Admin-sidene til Wordpress er ofte trege hvis du har flere tillæg installeret, siden det er vanlig, at de kontakter udbyderen for at se efter opdateringer. Dette er en feature, ikke en bug, men vurder gerne at fjerne tillæg som du ikke bruger.

Eksempler

De nedenstående eksemplene bruger skærmbilleder fra Chrome 8. I Chrome 9 og nyere velger man panelet "Network" istedenfor "Resources", men ellers er brug og tolkning lig. Du må læse mere om dette på Google Chrome udvikler-websidene.

www.vg.no

Først ser vi på et eksempel fra www.vg.no via vores 1 Gbps-linie, nedlastingstiden vil være længere på tregere linier:

www.vg.no-resources

www.vg.no laster indhold fra flere kilder, blandt andet andre servere hos VG, og f.ex. ekstern udbyder midasplayer.com. Dette ser stort set ud til at gå hurtigt, men lasting af eksternt indhold og indhold fra andre servere kunde gjort, at sidelasting gik tregere. Hvis vi havde set lenger ned i listen af lastede elementers ressourcebrug, så ville vi set hvad det er som udgør det sidste sekundet af tidsbrugen.

Domæneshop SOS

Og her er tilsvarende eksempel for det punktet i vores spørgsmål og svar som du ser på nu:

SOS 246-resources

Som du ser, er faq hovedsakelig ressourcebegrænset af selve CGI-scriptet, mens billedelasting går hurtigt. En eventuel forbedring skal da ligge i optimalisering i koden i selve faq.

Se også:

Søgeord:  

Indholdsfortegnelse

© 2019 Domeneshop AS · Om os · Vilkår · Fortrolighedspolitik