flyKSU Skrevet 8. mars 2011 Del Skrevet 8. mars 2011 I det siste har startsiden på nettsida mi - www.kvernberget.net begynt å laste tregt. Jeg henter inn data fra Avinor til å vise ankomst- og avgangstider (se her), og tror det er dette som gjør at hele siden laster tregt. Det jeg lurte på var on det var mulig for meg å gjøre noe slik at ikke hele nettsiden "går i stå" i påvente av at data fra Avinor skal laste inn, eventuelt få dette til å laste raskere? Lenke til kommentar
laserlars Skrevet 8. mars 2011 Del Skrevet 8. mars 2011 (endret) Hent dataene via async ajax ? Hvis jeg ikke husker helt feil så henter den dataene i "bakgrunnen" mens resten av siden laster individuelt. Står mer om dette på w3schools. Med mindre det er dette du allerede gjør Endret 8. mars 2011 av laserlars Lenke til kommentar
flyKSU Skrevet 8. mars 2011 Forfatter Del Skrevet 8. mars 2011 Tror ikke jeg gjør det nei, men jeg vet heller ikke hva det vil si Finnes det noen guider, eller noen som vet hvordan? Lenke til kommentar
Terrasque Skrevet 8. mars 2011 Del Skrevet 8. mars 2011 jQuery gjør slike ting enkelt. <div id="innholdsdiv">Loading results.....</div> <script> $("#innholdsdiv").load("data.php"); </script> Det vil hente data fra data.php på serveren i bakgrunnen, og bytte ut innholdet i div'en når det er mottatt. Du kan også bruke noe a la memcached for å cache resultatene lokalt, istedet for å laste fra avinor hver gang, eller bare lagre resultatet lokalt i en fil. Hvis du vil være fancy så har du en prosess i bakgrunnen som oppdaterer det regelmessig, og bare bruker cache når du genererer siden. Lenke til kommentar
flyKSU Skrevet 8. mars 2011 Forfatter Del Skrevet 8. mars 2011 Høres lurt ut. Men... bare for å få det inn med teskje - Hvor i forhold til koden under skal div-en og scriptet plasseres? <?php include 'class.avinor.php'; $avinor = new avinor(); $timeNow = time(); if(isset($_POST) && isset($_POST['btnSearch'])){ $airport = $_POST['airport']; $timeFrom = $_POST['timeFrom']; $timeTo = $_POST['timeTo']; $direction = $_POST['direction']; }else{ $airport = "KSU"; $timeFrom = 0; $timeTo = 5; $direction = "0"; } $directions = array( '0' => 'Begge retninger', 'A' => 'Ankomst', 'D' => 'Avgang' ); ?> <?php function getHoursFromDate($time){ date_default_timezone_set('UTC'); if($time != ""){ $currentTime = str_replace("T", " ", $time); $date = new DateTime($currentTime); $timeZone = new DateTimeZone('Europe/Oslo'); $date->setTimezone($timeZone); return $date->format('H:i'); } return ''; } $avinor->setAirport($airport) ->setTimeFrom($timeFrom) ->setTimeTo($timeTo); if($direction != "0") $avinor->setDirection($direction); $result = $avinor->getResult(); ?> <table class="data-table"> <thead> <td><div align="center"><br /> </div></td> <td><div align="center"><strong>Rutenr.<br /> <br /></strong></div></td> <td><div align="center"><strong>Tid<br /> <br /></strong></div></td> <td><div align="center"><strong>Destinasjon<br /> <br /></strong></div></td> <td><div align="center"><strong>Status<br /> <br /></strong></div></td> </thead> <?php $color = ""; // DENNE MÅ STÅ HER FØRST, DEN SKAL INNEHOLDE "" OM DU SKAL STARTE MED HVIT ELLER "FARGE" OM DU SKAL STARTE MED FARGE foreach($result as $flight): // Annenhver farge kode (kan kopieres) ////////////////////// if($color == "") { $color = "even"; } else { $color = ""; } ///////////////////////////////////////////////////////////// // Dersom denne ruten er kansellert skal den ha rød bakgrunnsfarge /// if($flight['status']['code']['code'] == "C") $color = "cancelled"; ////////////////////////////////////////////////////////////////////// $avg = getHoursFromDate($flight['scheduleTime']); $status = $flight['status']['code']['no'] . ' ' . getHoursFromDate($flight['status']['time']); if($flight['airport']['code'] == $avinor->getAirport() && $flight['direction'] != "A"){ $airport = $flight['viaAirport'][0]['name']; }else $airport = $flight['airport']['name']; if($flight['direction'] == "A"){ $fligtIcon = array( 'src' => 'iconArrowDown.png', 'text'=> 'Ankomster' ); }else{ $fligtIcon = array( 'src' => 'iconArrowUp.png', 'text'=> 'Avganger' ); } $viaAirport = ''; if(is_array($flight['viaAirport']) && count($flight['viaAirport']) > 0){ foreach ($flight['viaAirport'] as $ap){ /** * CODE: $ap['code'] * NAME: $ap['name'] */ $viaAirport .= utf8_decode($ap['name']); } } ?> <tr class="<?php echo $color; ?>"> <!-- ////////////////// DENNE MÅ KOPIERES --> <td><img src="gfx/<?php echo $fligtIcon['src']; ?>" alt="<?php echo $fligtIcon['text']; ?>" /></td> <?php $filename = "scheduleinfo/scheduleinfo_" . $flight['flightId'] . ".php"; if (file_exists($filename)) { echo "<td><a href=\"rutedata.php?r=" . $flight['flightId'] . "\">" . $flight['flightId'] . "</a></td>"; }else{ echo "<td>" . $flight['flightId'] . "</td>"; } ?> <td><?php echo $avg; ?></td> <td><?php echo utf8_decode($airport); ?></td> <td><?php echo $status; ?></td> </tr> <?php endforeach; ?> </table> Lenke til kommentar
lassejl Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 Jeg ville plassert den koden der i filen kalt "data.php" i javascriptet som beskrevet. Deretter bruker du <div id="innholdsdiv">Loading results.....</div> <script> $("#innholdsdiv").load("data.php"); </script> til å hente det inn på den siden du vil vise det frem. Lenke til kommentar
flyKSU Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 Takk, det funket! Men hva kan grunnen være til at dataene laster så tregt? På andre nettsider som henter data fra samme kilde (f.eks. denne) lastes dataene relativt raskt. Er det noe jeg har lagt inn feil? Det lastet raskt til meg òg tidligere, men plutselig gikk alt i stå. Lenke til kommentar
Terrasque Skrevet 9. mars 2011 Del Skrevet 9. mars 2011 Vanskelig å si med så lite info du gir. Noen tips for hva du bør se på videre : Hvor mye data blir hentet fra Avinor? Hvordan blir det behandlet? Hva skjer egentlig inni 'class.avinor.php'? Hvor mye cpu blir brukt på serveren? Hvor mye båndbredde er ledig? Lenke til kommentar
flyKSU Skrevet 9. mars 2011 Forfatter Del Skrevet 9. mars 2011 Skal jeg være ærlig så vet jeg ikke. Men det ser ut som det er et gjennomgående problem å hente inn data fra eksterne kilder av en eller annen grunn. På http://www.kvernberget.net/ver.php henter jeg inn værdata fra yr.no, og også der går det veldig treigt, noe det ikke gjorde tidligere. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå