![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Benutzer
Registriert seit: 24.10.2006
Beiträge: 90
|
[EDIT by Ben]
Diskussion startete hier und kann gerne hier fortgeführt werden. @Ben Ich habe keine Benchmarks durchgeführt, aber rein theoretisch ist ein Singleton langsamer, als wenn du Objekte durchreichst. Bei einem Singleton rufst du jedesmal eine Funktion auf und das ist wesentlich langsamer als wenn du einfach auf eine Variable zugreifst. Teste das z.B. mal mit PHP_VERSION und phpversion () aus. Du wirst sehen, dass PHP_VERSION schneller ist. Ich verwende bei kleineren Sachen (und ich habe hauptsächlich kleine Sachen mit vlt. 200 Besucher pro Tag) aber trotzdem Singletons. Allerdings sollte man sich beim Thema Performance zuerst um andere Sachen kümmern (Apache, Dateisystem, Datenbank, Caching mit 404 ...) MfG Byrel Geändert von Ben (23.12.2006 um 20:06 Uhr). |
|
|
|
|
|
Nach oben #4 | |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Erklär mir das mal bitte Byrel. Wie cacht du mittels 404?
404 ist meines Wissens nach das: Zitat:
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
|
Nach oben #6 |
|
Benutzer
Registriert seit: 24.10.2006
Beiträge: 90
|
@robo47
Ne, ich habe mich nicht vertippt! Noch nie was vom 404 Trick gehört? Wenn du eine URL a la www.domain.com/news/1234.html hast, dann wird bei den meisten via .htaccess die id (also 1234) herausgefiltert und auf ein PHP Script weitergeleitet. Deshalb muss bei jedem Request das PHP Script geparst und eine Datenbankabfrage gemacht werden. Man könnte natürlich einen Cache implementieren und damit die Datenbankabfrage oft verhindern, aber das PHP Script muss immer noch geparst werden. Beim 404-Trick legt man einfach eine .htaccess Datei an, mit dem Inhalt: PHP-Code:
Jetzt liefert der Server nur noch statische HTML Seiten aus und es wird kein eigener PHP Prozess für eine .php Datei gestartet, die nichts anderes tut als den Inhalt aus einer Cache-Datei auszulesen und via echo auszugeben. Cool oder? MfG Byrel |
|
|
|
|
|
Nach oben #8 |
|
Benutzer
Registriert seit: 24.10.2006
Beiträge: 90
|
Ok, das ist auch eine gute Lösung, aber dann muss man halt mit dem extremen Overhead von mod_rewrite leben und das verkraftet keine große Webseite (und für die ist das ja auch hauptsächlich gedacht). Außerdem ist es meiner Meinung sowieso egal ob da ein 404 oder ein 200 drinnen steht, da ich den log ja eh mit bestimmten Programmen auswerten werde und da kann ich die ja ignorieren.
|
|
|
|
|
|
Nach oben #9 | ||
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Zitat:
Zitat:
Basti |
||
|
|
|
|
|
Nach oben #10 | ||
|
Benutzer
Registriert seit: 24.10.2006
Beiträge: 90
|
Zitat:
Zitat:
MfG Byrel |
||
|
|
|
|
|
Nach oben #12 |
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Also die Methode mittels 404 ein "Caching" zu betreiben finde ich persönlich zwar für ein hübsches Workaround, jedoch ist es keine tolle Lösung. Man muss ja jedes Mal die Datei löschen, wenn sich etwas geändert haben sollte und das fragmentiert auf Dauer einen Webserver wohl sehr stark, gerade bei häufig aufgerufenen Seiten, wo sich viel ändert. Ich denke ein "Caching" mittels 304 ist zum einen deutlich dichter an der Funktionalität und meiner Meinung nach auch viel praktischer. Sicher muss jedes Mal das Script geparsed werden, jedoch ist die Trennung zwischen gecachten und nicht gecachten Seiten viel einfacher.
Geschmackssache, aber alleine schon die Tatsache, dass Log-Auswerter mit der 404er-Variante Probleme machen werden, schließt für mich diese Möglichkeit aus. PS: Ich dachte halt auch zuerst, du meinst 304er, deswegen auch das *scnr*
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|
|
|
|
|
Nach oben #13 | |||
|
Benutzer
Registriert seit: 24.10.2006
Beiträge: 90
|
Zitat:
Zitat:
Zitat:
MfG Byrel Geändert von Byrel (24.12.2006 um 11:21 Uhr). |
|||
|
|
|
|
|
Nach oben #14 | |||
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Zitat:
Zitat:
Zitat:
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
|||
|
|
|
|
|
Nach oben #15 | |
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Zitat:
__________________
I did it my way - Senseless-Blog |
|
|
|
|
|
|
Nach oben #16 | |||||
|
Benutzer
Registriert seit: 24.10.2006
Beiträge: 90
|
Zitat:
Zitat:
2. Ja. Wie willst du sonst GZip Komprimierung erzielen? Willst bei jedem Request neu komprimieren? Dann ist dein Server sofort tot. Weißt du eigentlich wie viel Rechenleistung das braucht? Bei Yahoo wird GZip komprimierung z.B. komplett ausgeschalten wenn die CPU zu mehr als 90% ausgelastet ist. Persistenter Speicher ist keine Mangelware, CPU Leistung schon! Zitat:
Zitat:
2. Wenn du einen ganz normalen Dateicache implementierst, löscht du genauso immer wieder die Dateien. Wenn du Änderungen in der DB durchführst, wird ein DB File auch immer größer und kleiner! Nur der "IF-MODIFIED-SINCE-Trick" ist kein Caching. Das wird teilweise vom IE gar nicht unterstützt! Viele Leute haben das auch bewusst deaktiviert! Außerdem ... Du musst immer einen Query machen der überprüft ob was geändert wurde. Das kannst du dir bei kleinen Sachen aber bei größeren überhaupt nicht leisten! So eine Anwendung wird auch niemals skalieren! Weiters muss für jeden Nutzer min. einmal die gesamte Seite generiert werden. Wenn ich jetzt aber Cache muss ich für alle Nutzer nur einmal generieren! Das Cache-File speichere ich dann auf nem lighthttpd ab und fertig. Zitat:
MfG Byrel Geändert von Byrel (24.12.2006 um 15:56 Uhr). Grund: Tippfehler |
|||||
|
|
|
|
|
Nach oben #17 | ||
|
Mensch
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
|
Zitat:
Kannst ja mal eine fragmentierte CD schreiben und dann davon versuchen einen Film anzuschauen. Dein CDROM wird sich bedanken und dich neben Lärm auch noch mit ner Diashow beglücken. Ok ein Laufwerklesekopf ist schneller als der Laser beim CDROM, aber das Prinzip ist das gleiche. Zitat:
__________________
I did it my way - Senseless-Blog |
||
|
|
|
|
|
Nach oben #18 | ||||||||||||||
|
Erfahrener Benutzer
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 662
|
Zitat:
Außerdem kann man keine 100% Bandbreite einsparen, denn dann wäre die Seite garnicht mehr besucht. Aber: Wieso schickt dein Browser die Dateien denn bitte so weg? Ich kenne es nur so, dass wenn ich auf eine GZip-Datei linke, dass diese als Download vom Server angeboten wird, nicht jedoch als normale Seite. Der Webserver übernimmt bei mir automatisch die Komprimierung in GZip, sollte dies unterstützt sein. Wie hast du das geregelt? Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Bei den Meisten anderen Caching-Methoden stimme ich dir zu und das stand von meiner Seite aus auch nie zur Debatte Zitat:
Jedoch: Da du ja auch von einer statischen Seite sprichst, hast du dir gerade ein Eigentor geschossen: Neben der Fragmentierung der DB hast du zusätzlich noch die Fragmentierung durch die Cache-Dateien, was dann zweierlei dein System beansprucht. Zitat:
Zitat:
Zitat:
Zitat:
Ich habe schon Seiten programmiert, die mit mehreren Tausend Zugriffen / Minute stabil gelaufen sind und das obwohl sie einen Query machen mussten. Gewusst wie sage ich da nur. Zitat:
Zitat:
Ich stehe der Technik nach wie vor kritisch gegenüber und würde sie auch entsprechend nicht benutzen. Es gibt bessere Methoden, Seiten zu cachen, die dann zwar auf dem sleben Prinzip beruhen (nämlich die Seite zu erzeugen und zu speichern), jedoch nicht den Umweg über 404 gehen müssen, was meiner Meinung nach eine unsaubere Lösung ist.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll |
||||||||||||||
|
|
|