Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[ Smarty ] Weegt het gebruik van smarty wel op?

Pagina: 1
Acties:
  • 799 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik weet niet of het juiste forum is want het is niet echt een programmeerprobleem maar een structureel probleem, maar omdat hier de developers zitten hoor ik graag jullie mening

We hebben een website met 100.000 leden, draaiend op verschillende servers met PHP / MySQL en een eigen html / xml caching systeem. De site is modulair opgebouwd, dat wil dus zeggen een core met daarin classes / functies / database-koppeling en daar rond per onderdeel van de site de nodige includes die voor de verwerking / weergave van de pagina's zorgen. Het systeem heeft zijn voordelen & nadelen. (voordelen: bij een bug in een module kan de module offline gehaald worden en hoeft niet de hele site down, er kunnen snel nieuwe modules toegevoegd worden & aangepast <> nadelen: bij structurele (core) aanpassingen dient er rekening te houden worden met alle modules, veel code is dubbel, ...)

Het huidige systeem kan nog serieus verbeterd worden, echter kruipt hier tijd in.

Nu onze server-admin is er van overtuigd dat smarty veel werk / resources kan besparen en we beter ipv het verbeteren van het huidige systeem, terug vanaf nul zouden beginnen met smarty. Echter is niet iedereen daarvan overtuigd, waaronder ikzelf.

Wat ik dus eigenlijk wil weten of het omzetten van grote projecten / websites naar smarty op lange termijn voordelen heeft gehad of nadelen. Ik heb er al even op gegoogled maar voor zover ik zoek vind iedereen het gebruik van smarty beter & zijn er alleen maar voordelen ...

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:29

MueR

Admin Devschuur® & Discord

is niet lief

Smarty is een redelijk uitgebreid en krachtig template systeem. De mogelijkheden zijn bijna eindeloos, maar er zit aan alle erg uitgebreide pakketten een nadeel, ze kunnen log zijn.
Nou heb ik zelf nooit klachten gehad over smarty, maar aan de andere kant ook niet over een eigengebouwd template systeem met caching. Wij gebruiken het voor een erg grote site, en hebben er geen klachten over in ieder geval. Het scheelt ontzettend op de hoeveelheid custom templatewerk.

Anyone who gets in between me and my morning coffee should be insecure.


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je kunt smarty ook stap gewijs (per module dus) introduceren. Smarty kun je alleen gebruiken voor de presentatie layer. Met een template systeem als Smarty haal je juist letterlijk de presentatie uit je code. In de presentatie layer laad je voortaan alleen de juiste template en zet je de juiste variabelen, array's etc.

Smarty gaat niet voor jouw de database koppelingen verzorgen.

Heeft jouw server-admin eigenlijk wel een idee wat Smarty is? Smarty verkomt in principe dat je regels als
PHP:
1
2
3
4
5
$hw = "Hello World";
echo("<html>");
echo("<head><title>Hello world</title></head>");
echo("<body><h1>" + $hw + "</h1></body>");
echo("</html>");


In plaats daarvan krijg je code als:
PHP:
1
2
3
$smarty = new Smarty();
$smarty->assign("hw", $hw);
$smarty->display("hello-world.tpl");


Vervolgens heb je ook een bestand hello-world.tpl
<html>
<head>
<title>Hello world</title>
</head>
<body>{$hw}!
</body>
</html>


Ofwel Smarty helpt je om code en presentatie nog verder te scheiden, iets anders doet het niet. In plaats van smarty zou je ook XSLT stylesheets kunnen gebruiken welke HTML output geven op basis van een input XML. Maar er zijn talloze template systemen, kies degene waar jij het beste mee kunt werken.

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
Het principe van smarty kennen we wel, we hebben er ook al mee getest. De enige vragen die ik me er bij stel is of het wel nuttig is van het te gebruiken. We hebben een site met enorm veel dynamische content / formulieren en onze server admin ziet er vooral de voordelen in voor het gebruik van de caching mogelijkheden van smarty, echter heb ik schrik dat het dan zijn doel voorbij schiet. Het is natuurlijk niet evident om jullie mening te vragen zonder inkijk / voorkennis van de site. Als ik het nu even heel "simplistisch" voorstel, gaat een site met smarty sneller gaan & minder resources gebruiken dan een identieke site zonder smarty

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20-11 22:35

Creepy

Tactical Espionage Splatterer

Dat kan je natuurlijk meten ;)

Zet in een test omgeving een klein deel om naar smarty en vergelijk het omgezette deel met het origineel (uiteraard op diezelfde test omgeving) qua load, laadtijden etc.. Je gaat hier alleen achterkomen door het daadwerkelijk te meten.

En jullie beheerder kan het wel fijn roepen, maar is het nu al een daadwerkelijk probleem? Zolang je geen load problemen hebt met 100.000 leden zou ik niet zomaar ineens een hoop omgooien omdat iemand beweert dat Smarty sneller gaat zijn dan het eigen systeem dat nu in gebruik is.

[ Voor 34% gewijzigd door Creepy op 14-01-2008 17:02 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Topicstarter
De servers zitten wel aan het "randje", echter kan er nog een hele hoop optimalisatie gebeuren in de code & dat is natuurlijk nu de vraag. "Starten we van scratch met smarty of optimaliseren we de huidige code" ... Het blijft een moeilijk vraagstuk, verder ben ik technisch minder sterk kwa kennis dan onze server-admin dus ik zoek onderbouwde tegenargumenten om tot een juiste beslissing te komen. Het kan zijn dat ik fout ben, maar smarty is naar mijn mening vooral bedoeld voor websites met heel veel verschillende pagina's met content die regelmatig herhaald wordt. (onze site heeft heel veel pagina, maar de pagina's zijn kwa opbouw altijd hetzelfde alleen de content is op alle pagina's anders).

ter info; het gaat over een social community, dus profielpagina's die leden kunnen aanpassen met bijhorend gastenboek, blog, foto-album, ...

[ Voor 4% gewijzigd door Verwijderd op 14-01-2008 17:15 ]


Verwijderd

Verwijderd schreef op maandag 14 januari 2008 @ 16:29:
Nu persoon is er van overtuigd dat tech gimmick veel werk / resources kan besparen en we beter ipv het verbeteren van het huidige systeem, terug vanaf nul zouden beginnen met tech gimmick.
Dit argument zie je heel vaak in software development en is een recipe for disaster. Terug vanaf nul beginnen? Niet doen. Seriously.

Als je al besluit om Smarty te gebruiken, doe dat dan als 'evolutie' van een bestaand systeem, niet als 'revolutie'.

  • mocean
  • Registratie: November 2000
  • Laatst online: 11:14
Ik heb wel wat ervaring met Smarty op een redelijk flinke website, en het bevalt prima. Smarty cached als het ware op 2 niveaus (op smarty.php.net leggen ze het prima uit).
- Het 'compiled' als het ware je templates naar PHP code
- Optioneel complete HTML caching (zelf in te stellen wanneer die verloopt, geforceerd verlopen etc.)

En het is erg modulair. Je kan Smarty plugins schrijven voor allerlei blokken op je site.

Koop of verkoop je webshop: ecquisition.com


  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
Voorbeeldje: Mijn blog / Gearchiveerd item in mijn blog. Linksonderin zie je de parsetijden & aantal queries :)

Met smarty kan een heel groot deel van de content gecached worden (standaard een uur, 't is maar een klein blogje dus even refreshen als'ie alsnog 5 queries aangeeft ;)) zoals bijvoorbeeld de comments, laatste items blok, etc. Hij doet 1 query om te kijken of er nieuwe content is, zoniet laad'ie de oude content welke grofweg vijf keer zo snel is.

Kan dit ook zonder Smarty?
Ja, heel goed zelfs. Een een grote reissite waar ik de afgelopen maanden aan gewerkt heb bevat bijvoorbeeld een flash kaartje van europa met daarin het aantal accommodaties per land & per provincie, onderverdeeld in types. De queries om de XML daarvan op te bouwen zijn traag - anderhalve minuut voor de grootste is geen uitzondering. Een simpel systeem wat kijkt of er al een XML bestand bestaat voor een specifiek request en zoniet deze aanmaakt bespaart daarin een enorme laadtijd, zonder een regeltje Smarty (sterker nog, daar zou'ie alleen maar trager van worden.)

Evenzo gebruiken we voor de meertaligheid van de site memcache, wederom niks met smarty van doen maar wel razendsnel.

Heeft Smarty helemaal geen nut?
Nee, ook weer niet. Wat je met smarty kan kun je ook -altijd- zelf, maar het is vaak wel verdraaid meer code. De hele filosofie achter Smarty zit prima in elkaar en als ik zelf een template systeem zou bouwen zou ik zeer waarschijnlijk precies hetzelfde doen als zei. Templates worden gecompiled opgeslagen zodra ze aangepast zijn dus daar zit'm de drain niet in, cachen van bepaalde onderdelen (zoals menu's bijvoorbeeld) wordt er veel simpeler door gemaakt (aangezien je niet hoeft te gaan lopen klieren met ob_start etc) en de belangrijkste reden van alle: je wordt gedwongen om een goede scheiding te maken tussen code en layout.

Ja, je kan met {foreach} etc een heel eind komen, maar dat is niet de bedoeling. Vaak zul je merken dat het sneller is om al in PHP je data zo te rangschikken dat het simpel weer te geven is, met als gevolg dat ook de output van je classes een stuk logischer wordt. Gevolg daarvan is weer dat code van anderen ook simpeler te begrijpen is en minder snel aangepast zal worden - die ander zal namelijk ook goed over zijn output hebben moeten nadenken voor'ie het kon gebruiken in zijn templates.

Al met al is deze vraag niet door ons beantwoordbaar: elke situatie is verschillend, elke toepassing is verschillend, en of het voor jou de moeite waard is hangt volledig af van je team. Als jullie doorgewinterde coders hebben zitten met goede kennis van OOP en met een degelijk eigen framework zou ik niet van nul af aan beginnen en kun je ook prima af zonder smarty. Als jullie echter werken met minder ervaren mensen of als het bestaande systeem te wensen over laat en jullie het dit keer structureler aan willen pakken is het forceren van een scheiding in je logica wellicht wel de juiste weg :)

[ Site ] [ twitch ] [ jijbuis ]


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Waar wil je Smarty voor gebruiken?
Van wat ik uit je posts zie is het enige/belangrijkste punt: caching.

Kan Smarty hierbij helpen?
Smarty heeft diverse caching mechanismen, bijvoorbeeld het compilen van de html templates naar php zodat een template alleen bij het veranderen ingelezen hoeft te worden. Of dit voordeel heeft hangt dus van jullie huidige systeem af.
Tevens kan Smarty een pagina volledig cachen, wat zo te zien weinig effect gaat hebben aangezien jullie veel dynamische formulieren gebruiken.

Waarom wel Smarty gebruiken dan?
Smarty is een erg uitgebreid framework en het geeft veel mogelijkheden om de code en de templates netjes van elkaar te scheiden, hier is het dan ook primair voor bedoeld, als een template systeem. Afhankelijk van jullie huidige systeem en wensen kan dit een toevoeging zijn of alleen maar meer werk geven.

Smarty als caching oplossing?
Zoals ik hierboven al verteld heb heeft Smarty een paar caching mogelijkheden, maar ik heb mijn twijfels hoeveel nut deze zullen hebben bij jullie site, bij grote sites is het vaak belangrijker om de queries te optimaliseren, de resultaten van zware queries te cachen (al eens gekeken naar memcached?) en op andere plaatsen te gaan cachen. Het cachen van volledige pagina's, wat Smarty doet, heeft niet verschrikkelijk veel nut bij sites die erg dynamisch zijn.

Mijn advies is dan ook nog eens goed te gaan kijken naar wat nou de grootste bottleneck van het systeem is.
[list]
Voeren de queries te traag uit?

Dit is het meest voorkomende probleem naar mijn ervaring.
Is het template systeem onvoldoende (wat betrefd snelheid, mogelijkheden of scheiding van templates en code)?

Dan zou Smarty best kunnen helpen.
Is er teveel dubbele code waardoor het traag gaat?

In dit geval moet de code gewoon geoptimaliseerd worden.
Verwijderd schreef op maandag 14 januari 2008 @ 16:29:
Het systeem heeft zijn voordelen & nadelen. (voordelen: bij een bug in een module kan de module offline gehaald worden en hoeft niet de hele site down, er kunnen snel nieuwe modules toegevoegd worden & aangepast <> nadelen: bij structurele (core) aanpassingen dient er rekening te houden worden met alle modules, veel code is dubbel, ...)
Een modulaire site mag natuurlijk niet afhankelijk zijn van het template systeem dus dit zou niet relevant mogen zijn.

Dubbele code betekend in veel gevallen dat het ontwerp niet goed was (of er was een goed ontwerp maar er is teveel bij gehackt) dus dat zal sowieso opgelost moeten worden, met of zonder een systeem als Smarty.
Nu onze server-admin is er van overtuigd dat smarty veel werk / resources kan besparen en we beter ipv het verbeteren van het huidige systeem, terug vanaf nul zouden beginnen met smarty. Echter is niet iedereen daarvan overtuigd, waaronder ikzelf.
Vanaf nul beginnen is altijd pijnlijk, maar in sommige gevallen zeker de beste oplossing. Aangezien wij te weinig van dit systeem af weten kunnen we daar geen valide uitspraken over doen.
Wat ik dus eigenlijk wil weten of het omzetten van grote projecten / websites naar smarty op lange termijn voordelen heeft gehad of nadelen. Ik heb er al even op gegoogled maar voor zover ik zoek vind iedereen het gebruik van smarty beter & zijn er alleen maar voordelen ...
Smarty is een goed systeem en zal dus wat veel dingen betreft zeker een voordeel zijn, maar het is wel best log en groot wat het ontwikkelen onpraktisch/lastiger kan maken. Al zit Smarty kwa ontwerp prima in elkaar wil het niet zeggen dat het _de_ oplossing voor jouw probleem is, er is geen generieke oplossing voor elk probleem dus dat is niet met zekerheid te zeggen.

Blog [Stackoverflow] [LinkedIn]


  • deadinspace
  • Registratie: Juni 2001
  • Nu online

deadinspace

The what goes where now?

FragFrog schreef op maandag 14 januari 2008 @ 18:55:
Mijn blog [...] Linksonderin zie je de parsetijden & aantal queries :)
Of rechts, onder die sidebar. Of bovenaan. Of helemaal nergens. Het blijft lastig te voorspellen waar de browser het rendert als je die tekst buiten het HTML element zet :P

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

deadinspace schreef op maandag 14 januari 2008 @ 19:57:
[...]

Of rechts, onder die sidebar. Of bovenaan. Of helemaal nergens. Het blijft lastig te voorspellen waar de browser het rendert als je die tekst buiten het HTML element zet :P
Of half zichtbaar :X
Afbeeldingslocatie: http://i7.tinypic.com/73eup9w.png

Blog [Stackoverflow] [LinkedIn]


  • Sh4wn
  • Registratie: December 2006
  • Laatst online: 12-11-2017

Sh4wn

Bio-informatica

Template Lite is een lichtere versie van smarty, heeft precies dezelfde syntax, en features, alleen verbruikt minder geheugen en is sneller. :)

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 20-11 13:35
deadinspace schreef op maandag 14 januari 2008 @ 19:57:
Of rechts, onder die sidebar. Of bovenaan. Of helemaal nergens. Het blijft lastig te voorspellen waar de browser het rendert als je die tekst buiten het HTML element zet :P
Ik ben een coder, geen designer :P En helaas is parseinformatie nou net het enige wat je niet met een template engine kan outputten aangezien je juist wil weten hoe lang die erover doet, dus dan maar ranzig met een echo onderaan :+

* FragFrog << lui soms hoor :+

[ Site ] [ twitch ] [ jijbuis ]

Pagina: 1