Jump to content
php.lv forumi

Recommended Posts

Posted

Vai kāds nevarētu pastāstīt, kā iekonfigurēt php vai arī kādu komandu vajag, lai, spiežot back pogu browserī, lapa nepārlādētos par jaunu. Nu citādi sanāk lieka servera noslodze...

Posted

Vai tad ne? Uzlikt ka lapu drīkst kešot var tak. Nu protams 100% risinājums tas nav, bet daudzos browseros gan jau tas strādās. Vai vismaz būs nevis get pieprasījums, bet tikai head.

Posted

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:

Posted

Nu jā! Protams, ka php kodā! Saliec kešošanās headerus pareizus kautkādus! (kādus nezinu, meklē gūglē) Tad browseris varbūt paturēs datus, nevis pārlādēs tos,

Posted (edited)

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
Posted

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 :)

Posted

$hash=md5($_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']);

nu es saku - hasho to, no kā ir atkarīgs, kas beigu beigās rādīsies - ja tikai caura adresi tiek nodoti $_GET parametri, var hashot tikai QUERY_STRING.

Posted

ob_start - tur operatīvajā

bet beigās uz ob_get_clean dabū nost un saglabā failā

vienmēr operatīvajā var turēt tikai ar shared memory, linuxā stabilāx

×
×
  • Create New...