Keša problēmu risināšana
Jan0
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" />
Vizitkarte – vertikāli, horizontāli centrēta lapa
Dec2
Viens no šī laika “grūtākajiem” layout’iem – vertikāli un horizontāli centrēta lapa, visbiežāk vizitkartes tipa mājaslapa. Šīs problēmas risinājumi arī ir redzēti daudz un dažādi, liekākā daļa, diezgan, līki. Visvieglāk būtu izveidot 100%x100% tabulu ar atribūtiem align=”center” un valign=”middle”, bet priekškam lietot tabulu tur, kur tas nav vajadzīgs? Otrs biežāk pielietotais variants ir tabulas atdarināšana ar elementiem, proti, style=”display: table;” utt. Turklāt šādiem risinājumiem ir problēmas ar XHTML 1.0 Strict un pārlūku savietojamībām.
Parādīšu, kā to daru es, zinot centrējamā elementa augstumu.
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | * { margin: 0; padding: 0; } html, body { height: 100%; } body { background-color: #fff; font-family: Arial; font-size: 12px; color: #000; text-align: justify; } #top { width: 100%; height: 50%; /* šis elements nebrauks virsū wrapper'im */ position: relative; z-index: -1; } #wrapper { margin: -150px auto 0 auto; /* puse no elementa augstuma */ padding: 30px; width: 440px; height: 240px; background-color: #eee; } |
HTML
1 2 3 4 5 6 7 8 9 10 11 12 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Mana lapa</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="/css/layout.css" type="text/css" media="screen" /> </head> <body> <div id="top"> </div> <div id="wrapper">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. </div> </body> </html> |
Dabā to varam redzēt šeit.
Testēts uz Microsoft Internet Explorer 6, Microsoft Internet Explorer 7, Mozilla Firefix 3, Netscape Navigator 9, Apple Safari 3, Google Chrome, Opera 9.