Kom ihåg mig?
Home Menu

Menu


Performance

 
Ämnesverktyg Visningsalternativ
Oläst 2004-11-02, 10:30 #1
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
Hej,

Jag funderar lite över performance vid hantering av bilder. Jag har två metoder att välja på:

1. Alla bilder går via image.php
image.php öppnar filen och läser filen från en katalog på disk och spottar därefter ut bilden till webbläsaren.

2. Bilder länkas som vanligt
Alltså en <img>-tagg pekar direkt på bildens position.

Min fråga är; är alternativ 1 mycket långsammare än alternativ 2? Jag trodde först att så var fallet, men sedan började jag tänka i banor som att "Någon måste ju ändå läsa filen från disk, om det är ett PHP-script (image.php) eller Apache som gör detta borde väl inte spela någon stor roll?"

Vad tror ni?

Anledningen till att jag helst vill gå via image.php är för att jag vill kunna styra vilka som skall få tillgång till bilderna genom att kontrollera deras SESSION.

Tacksam för svar från performance-gurus!
netflax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 11:18 #2
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
En webläsare kan göra flera simultana anrop mot exempelvis en img. Hur php filer exekveras vet jag inte, men då en webläsare förväntar ett svar ifrån ett php skript så vet jag inte om de läggs på "kö" eller dylikt. Du har ju en php som i sitt htmlsvar anropar en php. En php i sig bör ju ta något längre tid att exekvera även fast den är mycket simpel. Frågan är om det är så pass mycket tid så du behöver bry dig om det.

Någon?
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 11:25 #3
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
Jag har bilder och vanliga dokument också. Låt säga att någon laddat upp en TIFF-bild på 10MB.. om PHP-scriptet skall läsa in filen och spotta ut den till webbläsaren kommer detta att ta lite tid. Men filen måste ju ändå spottas ut till läsaren av något... PHP eller via direkt länk och då av Apache?

Vad tror ni?
netflax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 16:32 #4
nomicon nomicon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 753
nomicon nomicon är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Aug 2003
Inlägg: 753
Citat:
Originally posted by netflax@Nov 2 2004, 12:25
Jag har bilder och vanliga dokument också. Låt säga att någon laddat upp en TIFF-bild på 10MB.. om PHP-scriptet skall läsa in filen och spotta ut den till webbläsaren kommer detta att ta lite tid. Men filen måste ju ändå spottas ut till läsaren av något... PHP eller via direkt länk och då av Apache?

Vad tror ni?
Enklast är väl att helt enkelt kolla.

I början av php-dokumentet så spottar du ut klockslaget/sekunder, och samma sak nederst i dokumentet, så ser du juh
hur snabbt sidan laddas?
nomicon är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 16:36 #5
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
Citat:

Enklast är väl att helt enkelt kolla.

I början av php-dokumentet så spottar du ut klockslaget/sekunder, och samma sak nederst i dokumentet, så ser du juh
hur snabbt sidan laddas?
OK, en sida går självklart mkt fortare att exekvera eftersom det inte är PHP-sidan som tar hand om bilden utan IMG-taggen... men frågan är om servern får jobba mkt hårdare eller inte. Servern måste ju jobba i båda fallen... men det är svårt att mäta vilket som är snabbare.
netflax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 17:23 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Citat:
Originally posted by netflax@Nov 2 2004, 17:36
Citat:

Enklast är väl att helt enkelt kolla.

I början av php-dokumentet så spottar du ut klockslaget/sekunder, och samma sak nederst i dokumentet, så ser du juh
hur snabbt sidan laddas?
OK, en sida går självklart mkt fortare att exekvera eftersom det inte är PHP-sidan som tar hand om bilden utan IMG-taggen... men frågan är om servern får jobba mkt hårdare eller inte. Servern måste ju jobba i båda fallen... men det är svårt att mäta vilket som är snabbare.
Logiskt sett så borde den få jobba mer, men frågan är hur mycket?

Du kanske hittar svaret redan i apache servern (som jag vet 0 om). Finns det "trådar" den kör anrop i eller ställs allt på kö, eller är det bara anrop till php som går i en kö och bilder/html whatever i egen etc etc.
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 18:06 #7
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Gör som nomicon sa, testa. Det blir ju en viss overhead jämfört med en img-tag i HTML, men det verkar ju funka för Lunar...
Anders är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-02, 22:36 #8
heyday heyday är inte uppkopplad
Medlem
 
Reg.datum: Jun 2004
Inlägg: 60
heyday heyday är inte uppkopplad
Medlem
 
Reg.datum: Jun 2004
Inlägg: 60
Min syn på saken:
Har du alternativet att generera en korrekt bildurl i htmlen, gör det.

Att köra script som läser och skickar filen är overkill i de fall bilden är en statisk bild. (genererar du en bild är det en annan sak.)

http 1.1 tillåter att man (webläsaren) kan återanvända en koppling mot servern för flera requests, vilket ger ett "kösystem" i sig. Men ie tillåter i sin tur (som standard) 4 kopplingar mot servern samtidigt, vilket gör att du har 4 köer som hämtar html/bilder/css/javascript/whatever. Har du stora bilder så är det en sak. Men har du många små bilder så blir det en anhopning förfrågningar på scriptet och då kommer scriptet vara avsevärt långsamare är httpd. Jag har inga siffror, men vi gjorde en dylik lösning för ett antal år sedan, och det är skillnad. (för besökaren that is). Det var iofs en äldre cgi installation av php.

httpd har långt mer erfarenhet av att spotta ut filer. Så är det det den ska göra så rekomenderar jag att köra på "statiska" bilder.
heyday är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-03, 09:57 #9
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Anders Anders är inte uppkopplad
Supermoderator
 
Reg.datum: Oct 2003
Inlägg: 833
Som jag förstod det ska användaren kunna ladda ner bilder om vissa parametrar i hans/hennes session stämmer, inte på alla bilder som hör till designen. Om det rör alla bilder (även små) som ligger på sidan och ingår i designen bör man inte köra dem genom ett script. Men om du vill räkna antal nerladdningar mm så borde det gå bra att köra genom ett script.
Anders är inte uppkopplad   Svara med citatSvara med citat
Oläst 2004-11-03, 11:31 #10
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
Mikael Simonsson Mikael Simonsson är inte uppkopplad
Nykomling
 
Reg.datum: Jun 2004
Inlägg: 34
Ett snabbt test med ApacheBench visar att det går ungefär 3 gånger snabbare att anropa bilden direkt.

Direkt:
Citat:
./ab -n 1000 -c 10 http://localhost/dev/image.jpg
...
Requests per second: 128.14 [#/sec]
Med PHP:
Citat:
./ab -n 1000 -c 10 http://localhost/dev/image.php
...
Requests per second: 37.41 [#/sec]
Förklaring av parametrarna till ab:
Citat:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make
image.php:
Kod:
$sFilename = "./image.jpg";
$f = fopen($sFilename, 'rb');

header('Content-Type: image/jpeg');
header('Content-Length: ' . filesize($sFilename));

fpassthru($f);
exit();
/ mikael
Mikael Simonsson är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 22:42.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017