18. januar 2010 - 12:53Der er
18 kommentarer og 1 løsning
Optrimering af javascript.
Hej allesammen. Har fået lavet min en chat i php og javascript. Har sat javascript til at opdatere 1 gang hvert sek så den hele tiden henter det nye data fra databasen.
Men syntes bare at det kræver en del af browseren, især hvis man nu har 2 javascripts igang.
Har hørt lidt om at ajax kan klarer det, men ajax skal vel også tjekke hver sekund efter nyt data, eller hvordan fungere det?.
Har i evt en måde som i vil anbefale at kører det på?.
Det er ajax du har lavet. Så der er ikke så meget mere at hente der. Anden end du måske kan sætte det ned til hvert andet sekund eller lign.
Du bør måske fokusere på om din server-side database kald er optimeret. Hvis du kalder databasen hver gang der kommer et ajax kald til vis.php kommer du til at få problemer med databasen hvis der er mere end et par brugere online.
Det ser også ud til at du henter alle chatbeskeder af databasen (inden et tidsinterval) ud hver gang den opdaterer. Det ville være smartere hvis den kun hentede dem ud som brugeren ikke allerede har set og så bare tilføjede dem i chatten.
At hente det hele ud hver gang give både større datamængder der sendes over ajax og mere arbejde for serveren der skal bearbejde det.
#6 Det er lidt svært at svare på entydigt uden at se koden. Overordnet set bør du cache det data din vis.php fil returnerer.
Det kan normalt (afhængig af hvad dit webhotel understøtter) gøres i en tekst-fil med et timestamp på. Hvis andre brugere så skal bruge data fra samme tidspunkt, tjekker de først om denne fil eksisterer. Gør den det, kan de bare hente dataet ud af denne fil i stedet for at kalde databasen.
Jeg ved ikke hvor meget erfaring du har med php, men det kan godt blive lidt langhåret hvis du ikke har meget erfaring med det.
Nu har jeg ikke set din kode, så bliver bare et eksempel. Du bør overveje hvor hurtigt du vil have dine chatbeskeder skal sendes ud til brugerne. Jo hurtigere, jo mere belastning kommer der på serveren og det kan blive mere besværligt at håndtere.
Så bør du også overveje hvor mange brugere der realitisk kommer til at bruge chatten samtidigt, hvis det er mindre 3-4 stykker gennemsnitligt, vil det nok være meget arbejde for så lidt.
Eksemplet viser hvordan vi finder et cache navn og hvordan vi tjekker om det mysql kald der skal laves allerede er gemt i cachen. Jeg har ikke testet det, så jeg ved ikke om det virker, men det burde kunne forklare princippet.
Du skal oprette en folder der med skriverettigheder, se første variabel i scriptet.
<?php // sti til folder der skal holde cache elementerne $cache_folder_path = "/www/cache"; $time_now = time();
// database kaldes igen hvert 5. sekund (skal være større end den tid der er mellem ajax kald) $database_freq = 5;
Jeg svarer ikke på private beskeder herinde. Du kan stille et spørgsmål i PHP kategorien, så er der nok nogle der kan svare på det (måske mig, hvis jeg har tid).
og jeg kan jo ikke slette en hvis jeg laver sådan at den kun skal hente den nyeste?. eller er jeg helt galt på den.
Mvh.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.