Keša problēmu risināšana

27
Jan
0

Lielāku portālu izmaiņu veikšanai nepieciešams, lai lietotāja interneta pārlūkprogramma pieprasītu atjaunotos datus, kā zināms, brouzeriem patīk tos pieglabāt – kešot (cache) -, tādejādi paātrinot lapas ielādi sev un samazinot trafika lielumu mums.

Protams, varam likt pārlūkam pieprasīt pilnīgi visu no jauna, taču, tas paildzinās lapas ielādes laiku un mūsu trafiku, kas nebūs no tiem labākajiem risinājumiem.

Bet kā likt pārlūkam pa jaunu pieprasīt tikai izmainītos failus? Principā, ideja ļoti vienkārša. Nedosim nekādus header’us, bet liksim domāt, ka šis fails agrāk nemaz nav redzēts.

Pārlūkam interesē pilna faila adrese, tātad tiek ņemtas vērā arī GET vērtības. Neizteicos korekti, bet doma bija – pamainam vērtību, kas seko aiz jautājuma zīmes, piemēram, /css/layout.css?xxx. Taču šo vērtību neģerēsim katru reizi randomā, jo šādā gadījumā fails atkal tiktu pieprasīts pie katras lapas ielādes. Kā mainīgo vērtību padosim faila izmaiņu veikšanas laiku.

<link rel="stylesheet" href="/css/layout.css?<?=filemtime($_SERVER['DOCUMENT_ROOT'].'/css/layout.css');?>" type="text/css" media="screen" />

Kodā tas neizskatīsies smuki (ja tas tevi neuztrauc, tad tālāk vari nelasīt), šoreiz palīdzīgu roku var sniegt mod_rewrite. Mainīgo vērtību varam padot, nevis caur jautājuma zīmi, bet gan kā mapi, piemēram, /css/jan27/layout.css.

<link rel="stylesheet" href="/css/<?=strtolower(date("Mj",filemtime($_SERVER['DOCUMENT_ROOT'].'/css/layout.css')));?>/layout.css" type="text/css" media="screen" />