[php] Gedeelte site statisch maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een druk bezochte site, waarvan het menu links en rechts helemaal vol met data staat. Allemaal updates enzo, waar bij elke pageview toch aardig wat kracht voor nodig is. Nu wordt de site maar een een keer of 4 per dag geupdate, dus de menu's hoeven eigenlijk helemaal niet bij elke pageview vers uit de db gehaalt te worden.

Nu vraag ik me af, wat kan ik hier precies aan doen om dat dus te voorkomen, en het gehele menu zeg maar statisch te maken?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

gewoon een html/php file maken met een scriptje :?

Acties:
  • 0 Henk 'm!

  • bigben04
  • Registratie: December 2001
  • Laatst online: 30-08 20:47
Elke keer als een beheerder op 'update' ramt laat je een HTML file genereren? Dit kan iig als je een CMS gebruikt, als je rechtstreeks in de DB werkt dan wordt het wat lastiger.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Ik zou overwegen om de caching headers goed in te stellen en een HTTP proxy tussen de webserver (met PHP module) en het internet te plaatsen. Je kunt er dan voor zorgen dat elke pagina, bijvoorbeeld, maximaal eens per uur opgebouwd wordt. Dat betekent dus ook dat je een gemiddelde vertraging van een half uur bij updates hebt; dat is natuurlijk wel vervelend.

Een alternatief zou zijn om PHP code te gebruiken voor het cachen; bij het genereren van een pagina sla je de gegenereerde data dan op (zie hiervoor de output handling features van PHP). Je moet de gecachede pagina's dan wel expliciet weggooien als je een update doorvoert en uiteraard werkt het alleen (eenvoudig) bij pagina's die behalve door jouw updates in het geheel statisch zijn. Delen van de pagina cachen is in principe wel mogelijk, maar is een stuk lastiger.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thx ppl, Het lukt al aardig :)

Acties:
  • 0 Henk 'm!

  • jazz
  • Registratie: Mei 2002
  • Laatst online: 20-04 13:28
Als het je is gelukt zou je dan je bevindingen willen posten? Ik ben er namelijk ook wel in geïnteresseerd :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, best simpel eigenlijk. Je maakt een scriptje die de nodige data ophaalt, gewoon de output html die je in je site wilt zien:
PHP:
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
33
34
35
36
<?
// html compressie beginnen
ob_start("ob_gzhandler");


// hier haal je al je data op, en echo je het meteen
// hier komen dus al je querys waar je van af wilt in je menu


// ophalen van content
$html       = ob_get_contents(); 


// ob_en_clean functie uitvoeren
ob_end_clean(); 


// de enters, en tabs uit de code halen
$html       = preg_replace("/\t\r\n|\t\n\r|\t|\n|\r/", '', $html); 


// html weergeven
print $html; 


// menu.inc.php openen
$file = fopen("menu.txt",'w');


// nieuwe content wegschrijven
fwrite($file,"$html");


// bestand afsluiten
fclose($file);
?>


Menu.txt include je dan later weer, en laat je bv dmv een cronjob elke 5 min updaten. En het is ENORM veel sneller!


------------------------
Los van mijn antwoord voor jazz heb ik nog wel een vraag wat hier mee te maken heeft. Leden van mijn site kunnen namelijk hun menu aanpassen. Hiermee bedoel ik dat ze zelf kunnen kiezen hoeveel resultaten ze per menu willen zien. Beetje wat je op de FP van t.net hebt.

Nu komt de data in een .php of .txt file te staan, maar hoe kan ik nou een limiet instellen. IN het .txt file sla je gewoon bv het max mogelijk op 15 resultaten, maar als een user maar 5 resultaten heeft ingesteld, hoe kan ik dat in een txt file afkappen?

[ Voor 4% gewijzigd door Verwijderd op 23-09-2003 14:53 ]


Acties:
  • 0 Henk 'm!

  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

server side caching :]

op phpfreakz staat er een artikeltje over:
Server Side Caching
succes ermee

It's scientifically known, that base improves the tase of cheezes!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok, ja dat is zeg maar beetje het zelfde als ik gedaan heb, maar probleem bij mij is dat ik met variable menu's zit. Hoe het dan te doen? LImit is niet altijd 10 zoals in dat artiekel.

Acties:
  • 0 Henk 'm!

  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

Verwijderd schreef op 23 september 2003 @ 15:17:
Ok, ja dat is zeg maar beetje het zelfde als ik gedaan heb, maar probleem bij mij is dat ik met variable menu's zit. Hoe het dan te doen? LImit is niet altijd 10 zoals in dat artiekel.
* dip slaps jeroentz around a bit with a large trout
lees ff het hele artikel
staat helemaal uitgelegd hoe het werkt :P

It's scientifically known, that base improves the tase of cheezes!


Acties:
  • 0 Henk 'm!

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Verwijderd schreef op 23 September 2003 @ 15:17:
Ok, ja dat is zeg maar beetje het zelfde als ik gedaan heb, maar probleem bij mij is dat ik met variable menu's zit. Hoe het dan te doen? LImit is niet altijd 10 zoals in dat artiekel.
Wat bedoel je met variabele menu's ???

Stop uploading passwords to Github!


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Elk menu-onderdeel apart cachen. Bij elke aanvraag dan kijken wat de gebruiker voor menu-instellingen heeft en dan dmv include() elk onderdeel toevoegen.

Javascript zou misschien ook een oplossing kunnen zijn, maar dit is erg afhankelijk van hoe je het menu hebt opgebouwd.

Je kan ook botweg alle mogelijke menu's cachen, maar dit is natuurlijk geen fijne oplossing.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dip schreef op 23 september 2003 @ 15:30:
[...]


* dip slaps jeroentz around a bit with a large trout
lees ff het hele artikel
staat helemaal uitgelegd hoe het werkt :P
/me heeft een grooie plek :>

Dip ik heb het hele artikel doorgelezen, maar volgensmij staat het echt niet uitgelegd. Ik zal mijn situatie nog fftje beschrijven. Ik heb in mijn menu bv 10 verschillende menutjes onder elkaar, allemaal verschillende onderdelen. Elke users heeft bij zijn prefs ingesteld welke menu's hij wilt. Via PHP leest hij dus uit welke menu's er getoont moeten worden. Tot zo ver geen probleem. Ik include gewoon de benodige menu's op de jusite plek.

Maar nu het probleem. users kunnen ook zelf bepalen hoeveel resultaten PER menu ze willen zien. Het LIMIT aantal in de mysql query dus. Aangezien alles serside opgeslagen wordt, leverd dit volgensmij een probleem op, of je moet elke menu bv 10 x opslaan met een aparte limit, wat ixi al zei. Maar dat lijkt me geen goede oplossing

Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Je zou een aparte tabel kunnen maken waarin je om de 10 minuten de laatste 20 updates (desnoods al met de html-tags erin) gooit. Een query naar die tabel zal niet zoveel load veroorzaken als een query naar de volledige tabel.

Zonder tabellen kan dit natuurlijk ook, alleen zul je dan zelf een leuke functie/class moeten maken die de bestanden aanmaakt. Zodra iemand dan een pagina wilt bekijken kijk je wat zijn limit is en dan: for(x=0;x<limit;x++) { include('cache' + x) }
een beetje eenvoudig gezegt.

(ps.. mogen we de site eens bekijken?) :)

[ Voor 6% gewijzigd door ixi op 23-09-2003 15:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nu vraag ik me alleen af, als ik 10 verschillende menutjes heb, en die in losse files zet, of het dan nog wel sneller is. Dit veroorzaakt natuurlijk erg veel schijf activiteit. Of is dit te verwaarlozen?

Acties:
  • 0 Henk 'm!

  • _fm
  • Registratie: September 2003
  • Niet online

_fm

Smarty Templates
Een mooie php template engine, die het gegenereerde kan cachen. (en weer vanzelf refreshen op verstreken tijd, en op veranderingen in de bronbestanden)

Acties:
  • 0 Henk 'm!

Verwijderd

maar als een user maar 5 resultaten heeft ingesteld, hoe kan ik dat in een txt file afkappen?
_fm heeft denk ik een mooie link. maar je kunt natuurlijk zelf ook ipv van een html of txt gewoon een php script renderen, wat snel even uit het koekie (of waar je de settings dan ook maar hebt staan) de instellingen haalt en zo het gewenste rendert.
de data sla je in het nieuw gemaakte php script op in een array, je output alleen wat is gewenst.
en ipv een cron job zou ik er voor gaan om alleen te updaten als er nieuwe invoer is, maar dat is persoonlijk.

Acties:
  • 0 Henk 'm!

  • Maxonic
  • Registratie: September 2000
  • Laatst online: 05-09 22:23
Smaty's Tempate engine is idd erg goed.
Wil je wat meer zelf klooien kijk dan eens naar dit script.
Ik heb het jarenlang gebruikt met erg positieve resultaten.
Pagina: 1