Sigurado akong nangyari na ito sa iyo: pupunta ka sa isang website o magbubukas ng isang app at parang ang tagal mag-load. Buweno, malaking bahagi ng problemang iyan ay nagmumula sa katotohanan na ang pagkuha ng mga mapagkukunan sa pamamagitan ng network ay, sa mismong kalikasan nito, mabagal at mahalKapag ang isang website ay kailangang mag-download ng malalaking file, bumubuo ito ng maraming round trip sa pagitan ng device at ng server, na hindi lamang nakakadismaya sa user kundi maaari ring magdulot ng mga problema. hindi kinakailangang paggamit ng data para sa mga nagba-browse gamit ang limitadong mga mobile plan.
Para maiwasan ang labis na karga ng server at pagkadismaya ng mga gumagamit, ang pinakamahusay na tool na mayroon kami ay ang HTTP caching. Hindi ito ang pinaka-flexible na sistema sa mundo, dahil medyo limitado ang kontrol sa mga lifecycle ng file, ngunit ito ang unang linya ng depensa mas mahusay. Dahil tugma ito sa halos lahat ng modernong browser, pinapayagan tayo nito i-clear ang cache ng browser at makatipid ng oras at mga mapagkukunan nang hindi masyadong pinapakomplikado ang ating mga buhay.
Mga Pangunahing Kaalaman sa HTTP Caching at Paano Ito Gumagana
Bagama't madalas nating pinag-uusapan ang "HTTP cache" bilang isang bagay lamang, ito ay talagang isang hanay ng mga API ng web platform. Kapag humiling ang browser, ang unang ginagawa nito ay tingnan kung mayroon itong wastong kopya na nakaimbak nang lokal. Kung makakita ito ng tugma, agad itong ihahatid, na nag-aalis ng latency ng network at mga gastos sa paglilipat ng datos.
Ang kilos na ito ay pinamamahalaan sa pamamagitan ng mga header ng kahilingan at tugon. Bagama't karaniwang pinangangasiwaan ng browser ang mga header ng kahilingan (tulad ng If-None-MatchResponsibilidad ng server na i-configure ang mga response protocol. Ang pinakamahalaga ay:
- Cache-Control: Pinapayagan nito ang server na magdikta kung gaano katagal at sa anong paraan dapat iimbak ang mga file.
- ETag: Ito ay isang token o hash ng nilalaman. Kung mag-e-expire ang file, ipapadala ng browser ang code na ito; kung makita ng server na pareho ito, tutugon ito gamit ang isang Hindi Binago ang Kodigo 304pinipigilan ang muling pag-download ng file.
- Huling Binago: Katulad ng ETag, ngunit batay sa petsa ng pagbabago ng mapagkukunan.
Mga advanced na estratehiya sa pag-iimbak
Hindi dapat pantay ang pagtrato sa lahat ng file. Para sa mga may kasamang version control sa URL (ang tinatawag nating pag-fingerprint o pag-revolve), bilang estilo.x234dff.cssKaya nating maging agresibo. Sa mga ganitong pagkakataon, ang pinakamainam ay gumamit ng max-age=31536000 (isang taon), dahil kung magbabago ang file, magbabago rin ang URL at ida-download ng browser ang bagong bersyon nang walang pag-aalinlangan. Ito ang perpektong paraan para makakuha ng agarang bilis at mga ligtas na update.
Gayunpaman, ang ilang mga URL ay walang numero ng bersyon, tulad ng pangunahing HTML file. Hindi natin lubos na maiiwasan ang network dito, ngunit maaari natin itong i-optimize gamit ang mga partikular na direktiba: no-cache pinipilit ang browser na i-revalidate gamit ang server bago gamitin ang kopya, habang no-store ipinagbabawal ang anumang pag-iimbak, mainam para sa kumpidensyal na dataPara maiwasan ang walang katapusang mga loop o patuloy na mga error, inirerekomenda na huwag i-cache ang mga 301 redirect at 404 error gamit ang direktiba. no-store, must-revalidate.
Teknikal na pagpapatupad gamit ang OkHttp sa Java
Sa ecosystem ng Java at Kotlin, ang OkHttp ay pumuwesto bilang ang ginustong HTTP client dahil sa kakayahan nitong mahusay na pamahalaan ang mga koneksyon. Isa sa mga hiyas nito ay ang pag-cache ng tugonna nakakabawas sa load sa server at nagpapabuti sa availability ng app.
Para mapatakbo ito, hindi sapat ang simpleng paggawa ng client; kailangan mo ring tukuyin ang isang directory at ang maximum na laki ng cache. Halimbawa, sa pamamagitan ng pag-configure ng isang Cache na may partikular na direktoryo at limitasyong 10 MB, ang OkHttpClient magsisimula sa i-optimize ang trapiko sa network awtomatiko. Bukod pa rito, pinapayagan ng OkHttp ang paggamit ng mga interceptorna mga makapangyarihang kagamitan para sa pagdaragdag ng mga authorization header o mga kahilingan sa pag-log nang hindi nakakaabala sa pangunahing code.
Kung kailangan mo itong dalhin sa susunod na antas, maaari mong pagsamahin ang OkHttp sa mga library tulad ng IronPDF. Nagbibigay-daan ito sa iyong mahusay na makuha ang nilalamang HTML mula sa web at i-render ito nang direkta sa mga dokumentong PDF, isang mainam na daloy ng trabaho para sa pagbuo ng mga awtomatikong ulat o pag-save ng mga web page para sa offline na paggamit.
Pag-optimize ng WordPress gamit ang LiteSpeed
Para sa mga tagapamahala ng website ng WordPress, ang LiteSpeed ​​​​Cache ay nag-aalok ng kahanga-hangang detalyadong kontrol. Hindi lamang nito pinamamahalaan ang page caching kundi nagpapakilala rin ng mga konsepto tulad ng ESI (Kasama ang Gilid)Gamit ang ESI, maaari kang "butasan" ang isang naka-cache na pahina upang ang ilang bahagi (tulad ng admin bar o shopping cart) ay mai-load nang pribado o dynamic, habang ang natitirang bahagi ng site ay inihahatid mula sa cache. pampublikong cache.
Ang isa pang mahalagang aspeto ay ang pag-optimize ng media. Ang paggamit ng Tamad na Karga Pinipigilan nito ang browser sa pag-download ng mga larawang hindi pa nakikita ng user. Maaari itong mapahusay gamit ang... Mga placeholder ng LQIP (Mga Placeholder ng Imahe na Mababa ang Kalidad), na nagpapakita ng malabo at pinaliwanag na bersyon ng imahe habang dina-download ang orihinal sa background, na nagpapabuti sa bilis ng pang-unawa gumagamit
Tungkol sa CSS at JS, ang minification at file merging ay mahahalagang hakbang. Mga kagamitan tulad ng... UCSS (Natatanging CSS) Binibigyang-daan ka ng QUIC.cloud na bumuo ng kakaibang stylesheet para sa bawat pahina, na nag-aalis ng hindi kinakailangang code at nagpapaikli sa oras ng pagproseso ng browser, na nagreresulta sa mas mataas na marka. Mga Pangunahing Web Vitals mas malusog.
Pamamahala ng API Gateway at mga Proxy
Kapag gumagamit ng mga RESTful API, hindi laging makatuwiran na i-query ang database sa bawat kahilingan. Kung ang data ay madalang na magbago (halimbawa, isang beses sa isang araw), ang paghahatid ng naka-cache na tugon Ito ang pinaka-matipid na opsyon. Ang mga serbisyo tulad ng Amazon API Gateway ay nagbibigay-daan sa iyo na pamahalaan ito nang malawakan, inaalis ang pressure sa iyong imprastraktura at nag-aalok pinakamababang oras ng pagtugon.
Mahalagang maunawaan ang pagkakaiba sa pagitan ng isang direktang proxy at isang kabaligtaran na proxy. baligtarin ang proxy Gumagana ito sa harap ng origin server, na nagseserbisyo sa maraming client gamit ang isang kopya lamang ng file. Upang maiwasan ang isang proxy na maghatid ng nilalaman sa maling format (halimbawa, ang pagpapadala ng Brotli sa isang browser na sumusuporta lamang sa Gzip), mahalagang gamitin ang header na Vary: Accept-Encodingtinitiyak na ang pagkakatugma ng format nananatiling buo.