Eine der bekanntesten ist Smarty.
Wir selbst benutzen aber auch eigene Engines die deutlich leistungsfähiger sind.
Der ursprüngliche Gedanke bei solchen Engines ist es Code und Design voneinander zu trennen.
Aber genau das wird in der Praxis nicht mehr realisiert.
Plugins unter Smarty können jeden gewünschten Funktionsumfang aufweisen und haben es auch.
Damit allein hat man sich bereits vom Grundgedanken verabschiedet.
Es werden Templates aufgerufen die wiederum Plugins beinhalten die wiederum Templates aufrufen usw. .
Und das ergibt weitere erhebliche Verluste im Betrieb.
Alle Templateenginenutzer sollten sich an Serienbriefe orientieren - Platzhalter in Schreiben werden durch Inhalte ersetzt.
Also immer zuerst alle benötigten Daten definieren um sie dann zu verwenden.
Um nicht ein heilloses Durcheinander von Runtime-Code und Darstellungscode zu erhalten genügt eine Templateengine wie sie in ähnlicher Art z.B. von Facebook genutzt wird und die eigentlich den Namen nicht verdient, dennoch enorm wirkungsvoll ist.
Hier mal eine solche Minimalausführung:
$tpl=null;
function tpl_set($name,$value)
{
global $tpl;
$tpl[$name]=$value;
}
function tpl_rendering()
{ global $tpl;
include('template.php');
}
Es erfolgt über diesen Weg eine Sammlung der Inhalte für die Platzhalter. In template.php ist die Darstellungslogik enthalten und somit ist Code und Design vollständig getrennt.
Ich habe in dieser Art mal unsere powersoftware.org Site damit umgesetzt und auf dem lokalen Testserver eine gigantische Leistung erhalten.
siege -b -c200 -t60S http://localhost/tplcms/index.php
** SIEGE 3.0.2
** Preparing 200 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 426385 hits
Availability: 100.00 %
Elapsed time: 59.71 secs
Data transferred: 9598.69 MB
Response time: 0.03 secs
Transaction rate: 7140.93 trans/sec
Throughput: 160.76 MB/sec
Concurrency: 194.08
Successful transactions: 426391
Failed transactions: 0
Longest transaction: 3.12
Shortest transaction: 0.00
Dabei verlieren sie alles andere aus dem Auge.
Da sind insbesondere die Leistungen die bei derartigen Systemen unter aller Würde sind und tatsächlich auch nicht gerade gut für das Geschäft.
Hier einmal der Demoshop des Titels prestashop:
siege -b -c200 -t60S http://demo-store.prestashop.com/de/
** SIEGE 3.0.2
** Preparing 200 concurrent users for battle.
The server is now under siege...[alert] socket: 146118400 select timed out: Connection timed out
[alert] socket: -793864448 select timed out: Connection timed out
[alert] socket: -726722816 select timed out: Connection timed out
[alert] socket: -718330112 select timed out: Connection timed out
[alert] socket: -928147712 select timed out: Connection timed out
[alert] socket: -970111232 select timed out: Connection timed out
[alert] socket: -894576896 select timed out: Connection timed out
[alert] socket: -869398784 select timed out: Connection timed out
[alert] socket: -1054038272 select timed out: Connection timed out
[alert] socket: -936540416 select timed out: Connection timed out
[alert] socket: 37013248 select timed out: Connection timed out
[alert] socket: -1305819392 select timed out: Connection timed out
[alert] socket: -1289033984 select timed out: Connection timed out
[alert] socket: -1087609088 select timed out: Connection timed out
[alert] socket: -1104394496 select timed out: Connection timed out
[alert] socket: -1314212096 select timed out: Connection timed out
[alert] socket: -1179928832 select timed out: Connection timed out
[alert] socket: -1347782912 select timed out: Connection timed out
[alert] socket: -861006080 select timed out: Connection timed out
[alert] socket: -986896640 select timed out: Connection timed out
[alert] socket: -852613376 select timed out: Connection timed out
[alert] socket: -919755008 select timed out: Connection timed out
[alert] socket: -1255463168 select timed out: Connection timed out
[alert] socket: -995289344 select timed out: Connection timed out
[alert] socket: -1263855872 select timed out: Connection timed out
[alert] socket: -1163143424 select timed out: Connection timed out
[alert] socket: -1230285056 select timed out: Connection timed out
[alert] socket: -1188321536 select timed out: Connection timed out
[alert] socket: -1037252864 select timed out: Connection timed out
[alert] socket: -1221892352 select timed out: Connection timed out
[alert] socket: -1372961024 select timed out: Connection timed out
[alert] socket: -1205106944 select timed out: Connection timed out
[alert] socket: -1381353728 select timed out: Connection timed out
[alert] socket: -1129572608 select timed out: Connection timed out
[alert] socket: -1146358016 select timed out: Connection timed out
[alert] socket: -1356175616 select timed out: Connection timed out
[alert] socket: -63699200 select timed out: Connection timed out
[alert] socket: 213260032 select timed out: Connection timed out
[alert] socket: 11835136 select timed out: Connection timed out
[alert] socket: -13342976 select timed out: Connection timed out
[alert] socket: 28620544 select timed out: Connection timed out
[alert] socket: -1330997504 select timed out: Connection timed out
[alert] socket: -1364568320 select timed out: Connection timed out
[alert] socket: -1171536128 select timed out: Connection timed out
[alert] socket: 3442432 select timed out: Connection timed out
[alert] socket: -1339390208 select timed out: Connection timed out
[alert] socket: -1154750720 select timed out: Connection timed out
[alert] socket: -877791488 select timed out: Connection timed out
[alert] socket: -1322604800 select timed out: Connection timed out
[alert] socket: -1121179904 select timed out: Connection timed out
[alert] socket: -1079216384 select timed out: Connection timed out
[alert] socket: 112547584 select timed out: Connection timed out
[alert] socket: 120940288 select timed out: Connection timed out
[alert] socket: 78976768 select timed out: Connection timed out
[alert] socket: -21735680 select timed out: Connection timed out
[alert] socket: -1096001792 select timed out: Connection timed out
[alert] socket: 129332992 select timed out: Connection timed out
[alert] socket: -1247070464 select timed out: Connection timed out
[alert] socket: 238438144 select timed out: Connection timed out
[alert] socket: -1297426688 select timed out: Connection timed out
[alert] socket: 137725696 select timed out: Connection timed out
[alert] socket: -1112787200 select timed out: Connection timed out
[alert] socket: 87369472 select timed out: Connection timed out
[alert] socket: 53798656 select timed out: Connection timed out
[alert] socket: -1389746432 select timed out: Connection timed out
[alert] socket: 62191360 select timed out: Connection timed out
[alert] socket: -1272248576 select timed out: Connection timed out
[alert] socket: 104154880 select timed out: Connection timed out
[alert] socket: -1213499648 select timed out: Connection timed out
[alert] socket: -961718528 select timed out: Connection timed out
[alert] socket: 95762176 select timed out: Connection timed out
[alert] socket: 196474624 select timed out: Connection timed out
[alert] socket: 45405952 select timed out: Connection timed out
[alert] socket: 70584064 select timed out: Connection timed out
[alert] socket: -1045645568 select timed out: Connection timed out
[alert] socket: 230045440 select timed out: Connection timed out
[alert] socket: 154511104 select timed out: Connection timed out
[alert] socket: -30128384 select timed out: Connection timed out
[alert] socket: -525297920 select timed out: Connection timed out
[alert] socket: -1398139136 select timed out: Connection timed out
[alert] socket: -391014656 select timed out: Connection timed out
[alert] socket: -558868736 select timed out: Connection timed out
[alert] socket: -214767872 select timed out: Connection timed out
[alert] socket: 188081920 select timed out: Connection timed out
[alert] socket: 263616256 select timed out: Connection timed out
[alert] socket: -701544704 select timed out: Connection timed out
[alert] socket: -206375168 select timed out: Connection timed out
[alert] socket: -667973888 select timed out: Connection timed out
[alert] socket: 204867328 select timed out: Connection timed out
[alert] socket: -323873024 select timed out: Connection timed out
[alert] socket: -340658432 select timed out: Connection timed out
[alert] socket: -483334400 select timed out: Connection timed out
[alert] socket: -265124096 select timed out: Connection timed out
[alert] socket: -256731392 select timed out: Connection timed out
[alert] socket: -416192768 select timed out: Connection timed out
[alert] socket: -466548992 select timed out: Connection timed out
[alert] socket: -516905216 select timed out: Connection timed out
[alert] socket: -248338688 select timed out: Connection timed out
[alert] socket: -491727104 select timed out: Connection timed out
[alert] socket: -332265728 select timed out: Connection timed out
[alert] socket: -374229248 select timed out: Connection timed out
[alert] socket: -365836544 select timed out: Connection timed out
[alert] socket: -407800064 select timed out: Connection timed out
[alert] socket: -474941696 select timed out: Connection timed out
[alert] socket: -751900928 select timed out: Connection timed out
[alert] socket: -357443840 select timed out: Connection timed out
[alert] socket: -349051136 select timed out: Connection timed out
[alert] socket: -500119808 select timed out: Connection timed out
[alert] socket: -38521088 select timed out: Connection timed out
[alert] socket: -273516800 select timed out: Connection timed out
[alert] socket: -424585472 select timed out: Connection timed out
[alert] socket: -315480320 select timed out: Connection timed out
[alert] socket: -46913792 select timed out: Connection timed out
[alert] socket: -458156288 select timed out: Connection timed out
[alert] socket: -449763584 select timed out: Connection timed out
[alert] socket: -785471744 select timed out: Connection timed out
[alert] socket: -298694912 select timed out: Connection timed out
[alert] socket: -4950272 select timed out: Connection timed out
[alert] socket: -693152000 select timed out: Connection timed out
[alert] socket: -290302208 select timed out: Connection timed out
[alert] socket: -911362304 select timed out: Connection timed out
[alert] socket: -777079040 select timed out: Connection timed out
[alert] socket: -399407360 select timed out: Connection timed out
[alert] socket: -281909504 select timed out: Connection timed out
[alert] socket: -239945984 select timed out: Connection timed out
[alert] socket: -651188480 select timed out: Connection timed out
[alert] socket: -609224960 select timed out: Connection timed out
[alert] socket: -676366592 select timed out: Connection timed out
[alert] socket: 246830848 select timed out: Connection timed out
[alert] socket: -735115520 select timed out: Connection timed out
[alert] socket: -114055424 select timed out: Connection timed out
[alert] socket: -584046848 select timed out: Connection timed out
[alert] socket: -567261440 select timed out: Connection timed out
[alert] socket: 171296512 select timed out: Connection timed out
[alert] socket: 255223552 select timed out: Connection timed out
[alert] socket: 179689216 select timed out: Connection timed out
[alert] socket: -684759296 select timed out: Connection timed out
[alert] socket: -709937408 select timed out: Connection timed out
[alert] socket: -1020467456 select timed out: Connection timed out
[alert] socket: -617617664 select timed out: Connection timed out
[alert] socket: -575654144 select timed out: Connection timed out
[alert] socket: -382621952 select timed out: Connection timed out
[alert] socket: -542083328 select timed out: Connection timed out
[alert] socket: -600832256 select timed out: Connection timed out
[alert] socket: -441370880 select timed out: Connection timed out
[alert] socket: -592439552 select timed out: Connection timed out
[alert] socket: -172804352 select timed out: Connection timed out
[alert] socket: -307087616 select timed out: Connection timed out
[alert] socket: -189589760 select timed out: Connection timed out
[alert] socket: 162903808 select timed out: Connection timed out
[alert] socket: -944933120 select timed out: Connection timed out
[alert] socket: -760293632 select timed out: Connection timed out
[alert] socket: -533690624 select timed out: Connection timed out
[alert] socket: -181197056 select timed out: Connection timed out
[alert] socket: -432978176 select timed out: Connection timed out
[alert] socket: -1137965312 select timed out: Connection timed out
[alert] socket: -634403072 select timed out: Connection timed out
[alert] socket: -802257152 select timed out: Connection timed out
[alert] socket: -223160576 select timed out: Connection timed out
[alert] socket: -827435264 select timed out: Connection timed out
[alert] socket: -835827968 select timed out: Connection timed out
[alert] socket: -508512512 select timed out: Connection timed out
[alert] socket: -1028860160 select timed out: Connection timed out
[alert] socket: -197982464 select timed out: Connection timed out
[alert] socket: -768686336 select timed out: Connection timed out
[alert] socket: -642795776 select timed out: Connection timed out
[alert] socket: -810649856 select timed out: Connection timed out
[alert] socket: -1003682048 select timed out: Connection timed out
[alert] socket: -659581184 select timed out: Connection timed out
[alert] socket: -550476032 select timed out: Connection timed out
[alert] socket: -743508224 select timed out: Connection timed out
[alert] socket: -72091904 select timed out: Connection timed out
[alert] socket: -1280641280 select timed out: Connection timed out
[alert] socket: -978503936 select timed out: Connection timed out
[alert] socket: -1406531840 select timed out: Connection timed out
[alert] socket: -1196714240 select timed out: Connection timed out
[alert] socket: -626010368 select timed out: Connection timed out
[alert] socket: 221652736 select timed out: Connection timed out
[alert] socket: -80484608 select timed out: Connection timed out
[alert] socket: -105662720 select timed out: Connection timed out
[alert] socket: -147626240 select timed out: Connection timed out
[alert] socket: -164411648 select timed out: Connection timed out
[alert] socket: -122448128 select timed out: Connection timed out
[alert] socket: -130840832 select timed out: Connection timed out
[alert] socket: -88877312 select timed out: Connection timed out
[alert] socket: -156018944 select timed out: Connection timed out
[alert] socket: -231553280 select timed out: Connection timed out
[alert] socket: -139233536 select timed out: Connection timed out
[alert] socket: -1012074752 select timed out: Connection timed out
[alert] socket: -902969600 select timed out: Connection timed out
[alert] socket: -819042560 select timed out: Connection timed out
[alert] socket: -953325824 select timed out: Connection timed out
[alert] socket: 20227840 select timed out: Connection timed out
[alert] socket: -1070823680 select timed out: Connection timed out
[alert] socket: -886184192 select timed out: Connection timed out
[alert] socket: -97270016 select timed out: Connection timed out
[alert] socket: -55306496 select timed out: Connection timed out
Lifting the server siege.. done.
Transactions: 24 hits
Availability: 10.86 %
Elapsed time: 59.42 secs
Data transferred: 0.86 MB
Response time: 6.06 secs
Transaction rate: 0.40 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 2.45
Successful transactions: 24
Failed transactions: 197
Longest transaction: 14.61
Shortest transaction: 0.00
Alles was mehr als 1 Sekunde dauert - vom Seitenaufruf bis hin zur kompletten Darstellung kostet Besucher - das ist eine allgemein bekannte Tatsache.
Also - wer Speed möchte und haben muss der sollte es sich genau überlegen ob er eine grundsätzlich funktionierende aber nicht brauchbare Lösung einsetzt oder ob er sich sein Angebot gezielt aufbauen lassen möchte.
Keine Kommentare:
Kommentar veröffentlichen