| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich halte es für die meisten Systeme für die falsche Strategie, on-demand zu überprüfen ob der Cache noch gültig ist, sowas macht meiner Meinung nach eben nur Sinn bei Zeit-basierten Caches, weil wie du schon sagst, eine Überprüfung meistens auch einiges an Zeit braucht. Sinnvoller ist es eben den Cache zu löschen, wenn er veraltet ist und zwar dort wo die Daten verändert werden. Man muss sich nur ein System für die Tags überlegen, wie man seine Inhalte im Cache verwaltet, ihnen z.b. Modul-abhängige / Eintrags-abhänige Tags verpassen und sobald jemand Inhalte verändert, neuen Eintrag erstellt, Eintrag verändert, etc werden einfach alle Einträge im Cache mit den passenden Tags gelöscht, so verschiebt man die komplette Cache-Logik an einen Ort wo etwas mehr Rechenzeit nicht unbedingt so stark auffällt (abhängig vom System, aber im Normalfall hat nutzt man ja einen Cache in Systemen wo es deutlich mehr Lese als Schreib-Zugriffe gibt und Daten eben durchaus längere Zeit nicht verändert werden.)
__________________ robo47.net - Blog, Codeschnipsel und mehr | |
| | |
| | |
| da schreibt der ElePHPant Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Also ich denke schon das Caching, auch wenn der Cache auf "expire" geprüft wird, einen Geschwindigkeitsvorteil bringen kann. Bei einer Startseite werden mehrere Querys abgefeuert die aus einer recht großen Datenmenge lesen, dazu kommen noch JOINs auf mehrere andere Tabellen. Und das gleich mehrfach. Dazu kommen noch Kalender, Useronline, Werbung/Bannerrotation und so weiter. Das sind locker > 10 Querys die ne relativ große Datenmenge selektieren. Wenn da 200 User gleichzeitig surfen zwingt das die Datenbank in die Knie. Der Webserver läuft ohne große Probleme, nur die Datenbank schafft einfach nicht so viel. Und da bringt Caching doch einiges, denn dann hast du vlt. 200x eine Datei einlesen, aber es fallen 10 Querys pro Aufruf ab, dass sind rund 2000 Querys alle paar Sekunden. Und der Cache muss ja nicht mal sehr lange existieren, es reicht ja wenn er alle 1-2 Minuten neu erstellt wird ... dann hat man jede Minute einmal 10 Querys die den Cache generieren ... im Gegensatz zu ich sag mal 2000-4000 Querys pro Minute die sonst abgefeuert würden. Aber sicher ist es praktischer wenn ein Cache gar nicht erst überprüft werden muss. Allerdings stell ich mir das mit dem Taggen durchaus recht schwierig vor. Vor allem wenn bestimmte Seiten aus sehr vielen Daten (von verschiedenen Quellen) existieren kommen da schnell mal einige Tags zusammen, wenn man da mal nicht was übersieht. Ich hätte noch eine andere Idee. Man verwendet einen Cache der eben direkt angezeigt wird ohne überprüft zu werden, allerdings wird bei der Generierung des Caches die expiretime z.b. in eine Datenbank geschrieben, alle paar Minuten läuft dann ein Cronjob der alle Caches löscht die eben abgelaufen sind. Dann hat man vielleicht eine Ungenauigkeit von der Zeit die der Cronjob läuft aber ich denke das ist bei einem Cache kein Problem ob er jetzt 5 Minuten länger oder kürzer existiert. |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Wieso eigentlich expired prüfen? Beim Namen generieren einfach ein Modulo auf den aktuellen Timestamp mit in den Namen nehmen. Das erste Script, das auf das neue leere Cachefile trifft schreibt es dann.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 25.04.2005
Beiträge: 1.356
![]() | Zitat:
Hast ein Beispiel dazu? Ist etwas schwer verständlich wie du das meinen könntes. Warum ein Modulo auf den Timestamp? Vor allem mit welchen Wert?
__________________ Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält. | |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | 1/ Timestamp ist ein INT. 2/ Modulo Timestamp auf Sekunden entsprechend 14 Tagen 3/ Dann ändert sich alle 14 Tage das Ergebnis 4/ Dieses Eergbnis + weitere relevante (statische) Daten benutzen und bspw. über md5 nen Hash daraus erstellen 5/ Dieser Hash ist der Filename 6/ Filename verfällt automatisch, weil irgendwann ein neuer Dateiname gültig ist 7/ CRON muß aufräumen.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 25.04.2005
Beiträge: 1.356
![]() | Zitat:
hast du da nicht n denkfehler? Der Wert ändert sich doch continurierlich...
__________________ Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält. | |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Deshalb doch Modulo. time () % 3600 sollte jede Stunde nen neuen Wert erzeugen, oder? Oder Ganzzahldivision? Jetzt bin ich grad verwirrt. [edit] Stimmt: Ganzzahldivision!
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- Geändert von nikosch (21.10.2008 um 17:25 Uhr). |
| | |
| | |
| Neuer Benutzer Registriert seit: 17.10.2008
Beiträge: 21
PHP-Kenntnisse: Fortgeschritten ![]() | Bei non-expire-caching empfinde ich es als sinnvoller, den Cache dann neu zu schreiben, wenn sich die entsprechende (zu cachende) Seite verändert. Hier gibt es nun 2 Möglichkeiten: Bei Verändern der entsprechenden Seite... 1) wird der Cache für diese Seite gelöscht... das Cachefile wird beim ersten darauf folgenden Zugriff generiert. 2) wird direkt auch das Cachefile neu geschrieben. Ich empfinde Methode 1 als bequemer, aber das ist Ansichtssache. Grüße |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Umsetzung von Formular-Script mit vordefinierten Feldern | gamerphil | PHP Tipps 2008 | 6 | 06.10.2008 11:31 |
| OOP Umsetzung | cycap | PHP-Fortgeschrittene | 26 | 17.06.2008 19:13 |
| Pathfinding Algorithmus optimieren? (Algorith. von Dijkstra) | Martin13 | PHP Tipps 2007 | 19 | 04.09.2007 19:20 |
| Probleme bei der Umsetzung | Kein Genie | PHP Tipps 2007 | 3 | 02.03.2007 15:43 |
| Algorithmus für Suchwortrelevanz | tinchen | PHP Tipps 2006 | 3 | 06.12.2006 01:27 |
| Algorithmus, verschlüsselungssystem | notyyy | PHP Tipps 2006 | 7 | 22.08.2006 09:08 |
| [Erledigt] Smarty: Ist Caching sinnvoll? | PHP-Fortgeschrittene | 10 | 30.11.2005 21:46 | |
| register_globals, umsetzung, form, edit sql | TimmaY | PHP Tipps 2005-2 | 9 | 09.08.2005 22:31 |
| [Browsergame] Hilfe bei Umsetzung | Beitragsarchiv | 28 | 05.03.2005 09:16 | |
| [Erledigt] Algorithmus für binomische Formeln... | PHP-Fortgeschrittene | 19 | 02.12.2004 09:03 | |
| Hilfe bei Umsetzung Datenbankanwendung | PHP Tipps 2004 | 1 | 03.11.2004 20:24 | |
| Umsetzung eines Pluginsystems | /tmp | PHP-Fortgeschrittene | 18 | 14.09.2004 22:58 |
| [Erledigt] template-Systeme & caching | PHP Tipps 2004 | 27 | 04.09.2004 14:03 | |
| Algorithmus Bestimmung d. äußeren Polygons im 2D-Punktfeld? | tapferesschneiderlein | Off-Topic Diskussionen | 4 | 31.08.2004 15:12 |
| Caching Performance | PHP-Fortgeschrittene | 2 | 13.07.2004 20:29 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php eigener cache, browsergame algorithmus, cache algorithmus, eigener verschlüsselungsalgorithmus php, eigenen algorythmus, timestamp php cache, eigenen algorithmus, php caching algorithm, modulo timestamp cache, eigenen algorithmus php eigenen, caching algorithmen php, caching strategien php, cache algorithmen php, php cache umsetzten, ständige überprüfung php, php caching strategie, php cache md5, php cache algorithmus |