VPN-palvelimen viereinen välimuisti kuulostaa ilmaiselta kaistanleveydeltä kaikille tunnelin takana oleville. Sitä se ei ole, koska tuon pisteen läpi kulkevat tavut pysyvät TLS-istunnon suojaamina, jonka päät ovat selain ja verkkosivusto. VPN-yhdyskäytävä poistaa vain oman ulkoisen salauksensa, ei sovelluksen salausta. Päätä, mitä toistuvaa objektia haluat käyttää uudelleen ennen laitteiston lisäämistä.

TLS-istunto kuuluu selaimelle

Tavallisessa HTTPS:ssä selain neuvottelee avaimet sivuston kanssa, ja jokainen kättelyn jälkeinen tietue salataan tuolle pääteparien parille. VPN-yhdyskäytävä purkaa luomansa tunnelin salauksen ja välittää sitten läpinäkymättömiä TLS-tietueita. Se näkee kohteet, ajoituksen ja määrän, ei pyyntöriviä tai vastauksen runkoa. Se on raja, jonka kanssa jokaisen välimuistin on elettävä.

Jokainen suunnittelu, joka rikkoo sen, on TLS-salakuuntelun suunnittelu, ja sillä on omat seurauksensa varmenteiden luottamukseen ja laitehallintaan.

CONNECT on tunneli, ei välimuisti

Eksplisiittinen eteenpäin välittävä välityspalvelin saa yleensä HTTP CONNECT -pyynnön ja välittää sitten tavuja molempiin suuntiin. Välittäminen on avainsana: välityspalvelin ei jäsennä salattua keskustelua.

curl -sSI -x http://proxy.example:3128 https://example.com/

Vastauksen otsikot tulevat välityspalvelimen tunnelinkäsittelystä, eivät sivun välimuistikopiosta. Onnistunut CONNECT tarkoittaa, että polku toimii, ei että jotain tallennettiin uudelleenkäyttöön. Portin 443 ohjaaminen välimuistiin ei myöskään opeta sitä puhumaan TLS:ää, koska välimuistitus vaatii luettavia viestejä. Asiakkaan kokoonpanon on käytettävä tuettua eksplisiittistä välityspalvelinasetusta selittämättömän uudelleenohjauksen sijaan.

Välimuistita sitä, mitä hallitset, älä sitä, mitä selaat

Kun sisältö on sinun, käänteinen välityspalvelin voi päättää TLS:n ja tallentaa hyväksytyt vastaukset tarkoituksella. Kun se kuuluu pakettivarastoon, käytä peiliä, jota projekti tukee.

nginx -T | grep -n "proxy_cache"
curl -sSI https://mirror.example/pkg/index.json | grep -i -E "cache-control|age"

Ensimmäinen komento näyttää, onko välimuistivyöhyke määritetty ja missä se pätee, kun taas toinen näyttää alkuperän omat välimuistiohjeet yhdelle objektille. Jaetun välimuistin on kunnioitettava tuoreutta, välimuistin ohjauksia ja pyynnön attribuutteja, jotka erottavat esitykset; private ja no-store tarkoittavat eri asioita, eikä kumpaakaan pitäisi poistaa osumasuhteen nostamiseksi. HTTP-välimuistisäännöt rajoittavat myös vastausten tallentamista todennettuihin pyyntöihin, ja juuri siinä personoitu sivu muuttuu tietovuodoksi. Pidä välityspalvelin rajattuna hyväksyttyihin asiakkaisiin sen sijaan, että avaisit avoimen välityksen.

Mittaa osumaa, älä sekuntikelloa

Nopeampi toinen pyyntö ei todista, että uusi välimuisti teki mitään, koska selaimet ja käyttöjärjestelmät välimuistittavat itse aggressiivisesti. Pyydä välityspalvelimelta osuma- ja ohilyöntilaskurit ja seuraa alkuperän liikennettä kontrolloidun toiston aikana. Käytä yhtä toistuvaa tunnetun objektin latausta, ensin välimuisti käytössä ja sitten ohitettuna, ja vertaa alkuperän tarjoamia tavuja kuluneen ajan sijaan. Tarkista sitten valtuutusraja: kirjautumista vaativaa resurssia ei saa tarjota toiselle asiakkaalle.

Kirjaa kuorma, välimuistiavain ja käytäntö, joka salli uudelleenkäytön. Välimuisti on tietojen jakamispäätös optimointipuvussa.

Aiheeseen liittyvät artikkelit