Bilder och prestanda?

Events happening in the community are now at Drupal community events on www.drupal.org.
triptec's picture

Jag har letat överallt men inte hittat något.

Jag har en massa bilder som jag visar upp på vissa sidor, eller views, alla bilderna är image noder.
Fråga 1:
En view som visar upp 15 thumbnails av image noder, blir det 15 requests som drupal måste hantera?
Exempel: <img src="http://www.sida.se/system/files/images/img.jpg">

Fråga 2:
Om så är fallet skulle jag vilja ha hjälp med en RewriteRule så att det bara blir apache som hanterar det, något liknande:
RewriteRule ^/system/files/images/(.*) /sites/default/files/images/$1
Jag har testat lite men jag får det inte att funka, drupal lyckas lägga snoken i blöt iaf.

Anledningen är att jag kör en drupal sida på en liten virtuell server med ganska begränsat med minne. Sidan som jag kör skulle man nog nu med facit i hand gjort lite annorlunda men nu är det som det är. Kör apache2 prefork och den käkar upp allt minne bums så jag började med drupals cache, gjorde föga, slängde in boost och det vart genast bättre tills jag kom till sidorna med många bilder (boost cachar inte bilder eller något som har bla. "system" i sökvägen). Jag hoppas det har med detta att göra annars vet jag inte vad jag ska hitta på..

För att klargöra, jag vill att filer ska vara privata, bara släppa igenom till just images mappen i files.

Comments

Om bilder

TBarregren's picture

En view som visar upp 15 thumbnails av image noder, blir det 15 requests som drupal måste hantera?

Ja, det blir 15 filnedladdningar. Men det har inget med Drupal att göra.

Det är din webbläsare som gör det. Den läser HTML-koden, och i den finns referenser till andra filer som också behövs, inklusive CSS, JS och bilder, och CSS-filerna kan innehålla referenser till ytterligare CSS-filer och bilder som skall laddas ned, och JS kan också hämta mer filer. Det är inte ovanligt att en enda sida innebär över 100 filnedladdningar.

Det finns tekniker för att minska detta. CSS-filer och JS-filer kan slås samman (stöds av Drupal) och bilder som CSS-refererar till kan slås samman till CSS-sprites.

Webbläsaren hämtar dock inte parallellt dessa 15 (eller 100+) filer. De hämtas istället två och två (enligt spec. för HTTP 1.1). Och dessutom så återanvänds samma uppkoppling om KeepAlive hedaren säger så.

Läs mer: http://developer.yahoo.com/performance/rules.html.

jag vill att filer ska vara privata, bara släppa igenom till just images mappen i files.

En enkel lösning är att använda publika filer tillsammans med modulen Protected Download.

Men för att svara på din fråga så tror jag följande rewrite-regel kan fungera (ej testat):

RewriteRule ^system/files/images/(.*)$ sites/default/files/images/$1 [L]

Thomas BarregrenNodeOne

Jo

triptec's picture

Att det blir fil nedladdningar vet jag ju, men det klarar ju apache fint, problemet har ju varit att drupal kollat om varenda bild har ok för anonyma besökare. Nu har jag gjort files public men inte helt nöjd med det, men det funkar.. ska dock testa din rewriterule men jag vet inte riktigt om jag ska sätta den högt upp eller långt ner i .htacces filen, nå tips?

Placering

TBarregren's picture

ska dock testa din rewriterule men jag vet inte riktigt om jag ska sätta den högt upp eller långt ner i .htacces filen

Placera den före omskrivningen till index.php?q=..., d.v.s.:

RewriteRule ^system/files/images/(.*)$ sites/default/files/images/$1 [L]

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Observera att jag inte har testat detta, men det borde fungera.


Thomas BarregrenNodeOne