ugrás a tartalomhoz

shared SSL és img cache

zzrek · 2011. Jún. 16. (Cs), 00.37
Sziasztok!
Shared SSL-re raktam a webes alkalmazásomat, és azt tapasztaltam, hogy kb négyszeresére nőtt a forgalmam. Ahogy elnézem amiatt, mert a képeket nem gyorstárazzák a böngészők. Utánaolvasgattam a neten, és ellentmondásos infókat találtam, bár mintha az lenne az álláspont, hogy https esetén is gyorstárazódnia kellene.
Mit javasoltok?
htaccess-szel ellehetne érni, hogy a böngészők igenis gyorstárazzanak?
Ha igen, akkor konkrétan mit rakjak a htaccess-be?
Köszönöm!

kicsit off:
Egyébként az SSL az mennyire megterhelő egy szerver számára?
 
1

static

plip · 2011. Jún. 16. (Cs), 18.18
Én ezt úgy oldanám meg, hogy a statikus tartalmat (képek, css, js, xml, stb) külön domain szolgálja ki (pl. static.valami.hu) ssl nélkül.
További előnye, hogy statikus lekéréseknél nem megy fölöslegesen a cookie sem.
Plusz olyat is lehet csinálni, hogy static1., static2., stb domaineket csinálsz, amiknek a docrootja ugyanoda mutat persze, a fájlokat ezekről felváltva kéred le, ezzel kicselezed a http-nek azt a korlátozását, hogy egy domainről egyszerre max 2 kérés jöhet. Így én egy képgaléria (sok képpel) betöltődését kb ötszörösére gyorsítottam.
2

Nem jó

janoszen · 2011. Jún. 16. (Cs), 18.34
Nem jó ötlet, üvöltözni fog a mixed contentért a böngészò. Inkább cache headereket kéne kitolni. Ha hazaértem, leírom, hogyan.
3

köszi előre is

zzrek · 2011. Jún. 16. (Cs), 21.37
Köszi előre is!
(Sajnos nem nagyon találtam a témában olyan forrást, amit könnyen tudtam volna értelmezni, nagyon jól jön a segítség)
6

Köszi, ezt én is megtaláltam

zzrek · 2011. Jún. 17. (P), 09.31
Köszi, ezt én is megtaláltam, de nem egyértelmű. Egyrészt 2008-as válaszok vannak benne FF 3.x-es szériával kapcsolatban, és azt is írják, hogy kellene gyorstáraznia (mindenféle extra headerek nélkül).
És azt is írják, hogy küldjek ki "Cache-Control: max-age=3600" vagy a "Cache-Control: public" headert, de ebben az esetben PHP-vel kéne kiszolgálnom a képre vonatkozó kéréseket is, amit nem szeretnék.
htaccess-ről nincs szó benne, meg lehetne oldani azzal is?
5

RE

janoszen · 2011. Jún. 17. (P), 09.20
Bocsánat, tegnap este már nem volt energiám leírni. A saját oldalamnál használok .htaccess fájlt erre a célra. A dolog két lépésben megy:

1. Átírod az URL-jeidet, hogy tartalmazzanak egy verziószámot, hogy könnyen tudj új verziót frissíteni. Én erre a célra szeretem az URL-be beépítneni. Hogy ne legyen belőle gond, használok egy ilyen rewrite szabályt:

RewriteEngine On
RewriteRule ^b([0-9]+)/(.*)$ $2 [NS]


Ez annyit csinál, hogy a http://static.janoszen.hu/b1234/css/valami.css URL-t átírja arra, hogy http://static.janoszen.hu/css/valami.css. Persze a PHP kódban le kell kezelni a verziót.

2. Kiküldöd a cache headereket:

<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 year"
</IfModule>


3. Ezen felül még egy pár apróság:

<IfModule mod_headers.c>
        Header unset ETag
        FileETag None
</IfModule>

<IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/css application/javascript text/html text/plain text/xml
</IfModule>
7

Köszönöm

zzrek · 2011. Jún. 17. (P), 09.45
Köszönöm, kedves tőled, hogy segítesz.
Sajnos a .htaccess-hez nem értek, át kell rágnom magam a példádon.

Jól értem, hogy az 1. szabály azt csinálja, hogy a http://static.janoszen.hu/b1234/css/valami.css fájlt a http://static.janoszen.hu/css/valami.css url-lel is elérhetővé teszi?
És mi történik, ha van még egy http://static.janoszen.hu/b1235/css/valami.css is, akkor melyiket fogja választani?

Esetleg azt nem lehetne egyszerűen megoldani, hogy a .gif,.jpg, és a .png fájlokat valamilyen hosszú expires headerrel szolgálja ki, vagy csak akkor kérje le a böngésző, ha változott a fájl dátuma?
8

Számok

janoszen · 2011. Jún. 17. (P), 17.44
Minden számra ugyanazt a fájlt fogja kiszolgálni. Ez csak arra való, hogy ha változik a fájlok tartalma, változtatod a verziószámot és ezért a böngészők ezt új fájlként fogja érzékelni, és ezért nem cacheből szedi. Ha ezt nem teszed, akkor az egy éves cache time miatt nem tudsz fájlt frissíteni. (Erre szolgál a mod_expires rész.)
9

értem

zzrek · 2011. Jún. 17. (P), 22.00
Értem, fordítva gondoltam, de úgy nem volt logikus ;-)
Ha úgy beállítom, ahogy írod, akkor a képek esetében is verziózgatnom kell, különben csak 1 év múlva járnak le, ugye?

Találtam egy ilyet valahol:

### turn on the Expires engine
ExpiresActive On
 
### expires after a month in the client's cache
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
Ezt kombinálva a tieddel, ez működne így?

<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/gif A2592000
        ExpiresByType image/png A2592000
        ExpiresByType image/jpg A2592000
</IfModule>
Ide bele lehet tenni egyebet is, pl ez működne?

<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/gif A2592000
        ExpiresByType image/png A2592000
        ExpiresByType image/jpg A2592000
</IfModule>
<FilesMatch "\.(jpg|png|gif)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
Ha ennyit csupaszon beleteszek a .htaccess-be, akkor ez így működik is, vagy még kell bele valami? A .htaccess-nek milyen kódolású fájl kell, UTF8 BOM nélkül az jó?

(Nekem csak 1 index.php fájlom van, belül definiált css-sel, a többi állományom mind js-sel töltöm be és frissen kell, kivéve a képeket, szóval pillanatnyilag csak ezt kell megoldanom)

Abban csak reménykedni lehet, hogy ssl esetén a böngészők ezt figyelembe veszik?

Köszönöm!
10

Akár

janoszen · 2011. Jún. 17. (P), 22.08
Akár jó is lehet, de arra figyelj, hogy a böngésző csak akkor fogja újra kérni, ha megváltozik az URL. Ezért javasoltam, hogy minden élesítésnél vagy módosításnál változzon meg az URL. Elvileg a fentiekkel működnie kell SSL-el is, viszont arra figyelj, hogy a Firebug F5 esetén megjeleníti a nem lekért erőforrásokat is, tehát a címsorban nyomj rá entert, ha a pontos adatokra vagy kíváncsi.
11

HttpFox

Poetro · 2011. Jún. 17. (P), 22.11
Vagy használj HttpFox-ot, ami sokkal megbízhatóbb a HTTP kéréseket illetően, mint a Firebug.
12

köszi

zzrek · 2011. Jún. 17. (P), 22.35
Köszi Proclub és Poetro, kipróbálgatom, remélem használni fog.
Szép napot!