Avatar billede anykey Nybegynder
30. december 2003 - 23:58 Der er 7 kommentarer

Præcis tid i browser

Hej eksperter

Jeg har for sjovt lavet et script, hvis primære mål var at vise den præcise tid(i DK) i en hvilken som helst browser.
Jeg satte først min server til at synkronisere med en timerserver (sunsite.dk) hvert 10. minut. Vha. php udskrev jeg unix-tiden på det tidspunkt siden blev parset gennem phpmodulet på serveren. På klientsiden lavede jeg så et javascript, der beregnede lagget mellem klient og servertid. Dvs. forskellen mellem unix-tiden på min server og unix-tiden på klientens system.

Alt dette kan ses illustreret på http://time.lfe.dk

well... Jeg er dog ikke helt tilfreds.
Jeg er på lan med min server, og hvis jeg bruger siden lokalt, er tiden, der vises, PRÆCIS den samme som texttv på tv2. Det er jo fint nok. Går man dog ind på siden udefra, så er mit script ~1 sekund foran. Dette skyldes selvfølgelig den tid det tager at sende siden fra min serveren til klienten. Eller sagt helt præcist: Den tid, der går fra unix-tiden bliver generet og indsat i siden, til det tidspunkt, hvor lagget bliver regnet ud på klientmaskinen.
Det er dette delay jeg ønsker fjernet.

Derfor lyder mit spørgsmål: Hvordan kan man finde den præcise tid, det tager for en server at sende en side til en klient?

Min første idé var at lade javascriptet downloade siden igen og måle den tid, det tager. Jeg ved dog ikke om dette er muligt i javascript. Hvis det kan lade sig gøre, er mit problem løst, og jeg ønsker i så fald bare et eksempel på dette.

Jaeh.. det blev en længere en. Håber, I kan hjælpe ;o)
Avatar billede athlon-pascal Juniormester
31. december 2003 - 00:19 #1
Hvis du finder en hente-siden-igen-løsning, så husk, at det også tager tid fra javascriptet beder om opdatering, til serveren er kontaktet...
Avatar billede roenving Novice
31. december 2003 - 00:36 #2
Du kan måske få noget ud af at eksperimentere med cookies og timestamps, men hvad er nu reaktionstiden, når vi snakker et 56k-modem og en bredbåndsforbindelse på måske 200 gange så meget ?-)
Avatar billede olebole Juniormester
01. januar 2004 - 19:28 #3
<ole>

Det er en _rigtig_ dårlig løsning, du er ude i. Det giver en bunke unødige serverkald - det er aldrig ønskeligt.
Jeg lavede engang en løsning til en anden spørger her på E. Den gik ud på at hente et server-timestamp ved load af siden ... der efter holdt JavaScript styr på tiden i browseren (altså lægger sekunder til server-tiden). Det fungerede helt fint - og du kan jo prøve at søge på sitet her, hvis du ikke selv kan overskue at lave det.

At dit ur går 1 sekund ude af trit med TV2's ur er rent held. Serveren har et ur, som server-administratoren sætter - ligesom brugeren stiller uret på sin PC. Det samme gælder både for TV2 og din udbyder. Derfor er det et utroligt held, der ikke er større forskel på jeres ure.
Dit ur kan aldrig blive mere nøjagtig, end din udbyder sætter serverens ur til  :)

/mvh
</bole>
Avatar billede olebole Juniormester
01. januar 2004 - 19:43 #4
... sorry - jeg læste ikke dit spm. ordentligt. Du har øjensynligt lavet det netop, som jeg beskrev  :oD

Skal du lave et 'speedometer', skal du downloade en rigtig stor fil. Derefter sammenligner du fil-størrelse med download-tid. Jo hurtigere forbindelsen er, jo mere unøjagtig bliver målingen - og jo større skal filen være.
'Klumper' i forbindelsen er vanskelige at tage højde for - og filen skal som sagt være _stor_, så du får et brugbart gennemsnit - så det er ikke en anbefalelsesværdig løsning.

Du kan på onload af din side lave en XML-http-request (i IE og Mozilla). Det giver et meget hurtigt kald med meget lille transmissionstid. Opera er desværre stadig utrolig lam på mange punkter, men man kan dog lave noget med en skjult iframe, hvor man fyrer kaldet af og modtager tids-data. Da Opera dog ikke kan fyre en onload-event af på en iframe (og heller ikke forstår onreadyStateChange), må man fyre sin funktion af på 'window.onload' i dokumentet i iframe'en.

Dit problem er formodentlig, at browseren får timestamp'et, smatidig med, den loader hele siden ... og det tager jo som bekendt noget tid  :)
/mvh
Avatar billede zuiq Nybegynder
02. januar 2004 - 21:31 #5
Hehe, du kunne også bare trække et sekund fra tiden når den bliver vist ;)
Avatar billede olebole Juniormester
02. januar 2004 - 21:34 #6
Man kunne også argumentere:
  Hvis brugeren opdager, dit ur går et sekund forskelligt fra TV2's, er det den-onde-fløjte-mig en kedelig side, du har lavet - og du burde bruge din energi på noget _helt_ andet  :)
/mvh
Avatar billede zuiq Nybegynder
02. januar 2004 - 21:38 #7
:P
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester