Jump to content
php.lv forumi

Spiežot back, pārlādē lapu


Valcha

Recommended Posts

Nu tad sorr. Es biju domājis par to, kā uz servera iestādīt vai arī php kodā, lai, spiežot back pogu, nepārlādētu iepriekšējo lapu browserī par jaunu. Nu es domāju, ka tas varētu būt php iestādījums (ja tāds ir), bet neko jēdzīgu neatrodu. Jo es skatos, ka, piem., TVnetā nepārlādē pie BACK spiešanas, bet manā lapā pārlādē gan.

Vai ir kādas idejas? :blink:

Link to comment
Share on other sites

cits variants - serializē svarīgus datus un pats kešo tos failus, e.g.

 

provizorisks kods:

$hash=md5(serialize(array($_GET,$_POST,$_SESSION)));
$cache_timeout=180;//3 minutes
$cache_dir='./cache/';

if (!($tmp=@filemtime($cache_dir.$hash)) || (time()-$tmp>$cache_timeout) || !@include($cache_dir.$hash) )
ob_start();
else
exit;

viss tālākais kods, un pašās beigās

$fh=fopen($cache_dir.$hash,'w');
$html=ob_get_clean();
fwrite($fh,$html);
fclose($fh);
echo $html;

 

paskaidrojums:

1) tiek noģenerēts unikāls identifikators ienākošiem datiem, kas definē to, kas tiks atrādīts lapā, šis identifikators tiek izmantots kā kešfaila nosaukums att. direktorijā

2) pārbauda 3 nosacījumus -  nolasa kešfaila pēdējās maiņas laiku (ja fails neeksistē un laiks netiek atgriezts, uzsāk 3), vai nav notecējis att. sekunžu laiks un kešs nav jāatjauno, vai falu bijis iespējams iekļaut - tātad, ja viss izpildās kā gribētos, tiek iekļauts kešfails un exit.

3) citādi tiek uzsākta t.s. output kešošana - viss kam, būtu jāizvadās ar echo (htmls etc) tiek uz laiku paturēts operatīvajā atmiņā, no kurienes pēc visa koda beiguma mēs to dabonam ar ob_get_clean() un ierakstām kešfailā

 

pašrotējošā kēšošana, poņimaješ

Texas - Say What You Want (All Day Every Day)

Edited by Venom
Link to comment
Share on other sites

Paldies, Venom, šis būs īstais. Kā reiz arī vajadzēja, lai iekešo lapu uz laiku - daudz sīku bildīšu, kas jālasa lapas dizainam utt. Stulbi citādi, ka katru reizi jāielasa no cietā. Bet te ir operatīvajā :)

Es saprotu, ka varu kešot katru lapu, arī norādot to cash failu kā lapas nosaukumu, piem :

$hash='index';

 

Vismaz izskatās, ka darbojas. Paldies par palīdzību :)

Link to comment
Share on other sites

×
×
  • Create New...