Website caching wann nützlich?

  • Hallo Users,


    ich bin dabei ein eigenes CMS für meine Website zu erstellen und dabei habe ich mich noch nie genau mit caching befasst. Und dabei sind mir folgende Fragen im kopf gekommen wie:


    - Ab wie viele Nutzern ist das nützlich?
    - Ist es wirklich nötig?
    - Was muss man beachten?
    - Welche Arten gibt es und welche ist die beste und performanteste?
    - Und was ist wenn man auch variablen cachen möchte und das ganze z.B. wenn man dann wenn man Eingeloggt ist wird dann pro user eine cache datei von der seite herstellt?


    Mir ist bewusst das es schon einige Systeme gibt wie Smarty die schon sowas haben nunja ich möchte was eigenes machen auch als hobby mäßig!

    Best Regards


    Ita89

  • - Ab wie viele Nutzern ist das nützlich?

    Es ist nützlich wenn die Seite frequent besucht wird. Es bringt nix wenn der Cache nach 15 Minuten invalidiert wird und die Seite eh nur alle 30 Minuten einmal besucht wird. :P


    - Ist es wirklich nötig?

    Darüber lässt sich sicher streiten. Ich würde behaupten es schadet in den wenigsten Fällen.


    - Was muss man beachten?

    Richtige Konfiguration?
    Sinnvolle Seiten für die gecached wird. Wenn du einen Live-View von einer Seite brauchst bringt ein Cache nichts. Rufst du hingegen Seiten auf, die nicht dauernd aktualisiert werden, dann lohnt sich da ein Cache schon deutlich wenn dahinter große Abfragen durchgeführt werden müssten bei jedem Aufruf ohne Cache-Hit (bzw. ohne Cache)


    variablen cachen möchte

    Normal nutzt man einen Cache für Webseiten seitenweise. D.h. es werden statische HTML Seiten erzeugt statt immer das Backend zu bemühen. Sicher gibt es da auch andere Ansätze, man sollte halt die Sinnhaftigkeit hinterfragen. :P
    Eine gute Datenbank übernimmt ohnehin schon Teile des Cachings, da bringt es dann z.B. auch nicht mehr viel wenn ich die Daten zusätzlich in meinem Code bereit halte.

  • Richtige Konfiguration?
    Sinnvolle Seiten für die gecached wird. Wenn du einen Live-View von einer Seite brauchst bringt ein Cache nichts. Rufst du hingegen Seiten auf, die nicht dauernd aktualisiert werden, dann lohnt sich da ein Cache schon deutlich wenn dahinter große Abfragen durchgeführt werden müssten bei jedem Aufruf ohne Cache-Hit (bzw. ohne Cache)

    Kommt drauf an, welche Sachen mann cachen lässt gegen Bilder und CSS Dateien, spricht eigentlich nie etwas dagegen, dass vom Browser cachen zu lassen auch bei Live-Views ;) .


    Zum Thema:


    Normal nutzt man einen Cache für Webseiten seitenweise. D.h. es werden statische HTML Seiten erzeugt statt immer das Backend zu bemühen. Sicher gibt es da auch andere Ansätze, man sollte halt die Sinnhaftigkeit hinterfragen.
    Eine gute Datenbank übernimmt ohnehin schon Teile des Cachings, da bringt es dann z.B. auch nicht mehr viel wenn ich die Daten zusätzlich in meinem Code bereit halte.

    Caching hat immer einen Sinn und zwar die Peformance zu steigern :P , der Weg direkt auf etwas zuzugreifen was sich schon im Speicher befindet ist immer schneller als es neu zu laden der Computer macht es ja mit seinem Arbeitsspeicher und Paging schon vor ;) .




    Wenn du dir eine richtige Templateengine schreiben möchtest, würde ich deine Inhalte wie bei modernen Templateengines asynchrone clientseitig generieren lassen und via JS injekten.


    Du kannst dir ja dazu mal grob
    - AngularJS 2.0
    - React
    - Ember.js
    - Aurelia.io


    anschauen, das sind Frameworks, welche im Businessumfeld bei großen Firmen gerne genutzt wird.

  • Kommt drauf an, welche Sachen mann cachen lässt gegen Bilder und CSS Dateien, spricht eigentlich nie etwas dagegen, dass vom Browser cachen zu lassen auch bei Live-Views .

    Bilder cachen die Browser aber in der Regel ohne Probleme von sich aus schon sehr gut (außer man unterbindet das). Warum sollte man die serverseitig noch cachen (abgesehen davon, wenn es dynamische Bilder sind)?


    Caching hat immer einen Sinn und zwar die Peformance zu steigern

    Ich kann natürlich alles, was bereits durch die Datenbank gecached wurde, nochmal cachen. Ob das wirklich was bringt? Ich würde fast behaupten, dass man da am falschen Ende optimiert.


    - AngularJS 2.0

    Angular JS heißt seit Version 2 nur noch Angular. Angular ist ein Framework zum erstellen von Single Page Applications, hat also mit Caching direkt nix zu tun.


    im Businessumfeld bei großen Firmen

    Das mag für die "neuen" Big Player durchaus stimmen. Wenn du einmal mit einer großen Bank o.ä. gearbeitet hast wirst du deine Freude haben sowas durchzusetzen. ;)
    Die stehen eher auf was 100% stabiles, das sich schon durchgesetzt hat als etwas Neues.


    Ein großes Problem an den meisten Angular Anwendungen ist, dass die gebundelte Javascript Datei der Seite enorm groß wird. Gerade für mobile Anwender kann das in hohen Aufbauzeiten enden, in denen die Seite quasi "nicht antwortet". Man sieht eben im Browser nur weiß.
    Entsprechend gehen einige moderne Seiten weg vom reinen Angular Ansatz und laden zumindest das Grundgerüst der Seite mit einer "Laden-Meldung" direkt vor. D.h. das Javascript für diese Meldung wird inline eingebunden.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Bilder cachen die Browser aber in der Regel ohne Probleme von sich aus schon sehr gut (außer man unterbindet das).

    Richtiges caching des browser setzt aber das verwenden der korrekten header vorraus. Wenn OP hier so fragt würde ich mal davon ausgehen das er das (noch) nicht tut. Und wenn man sich mal die meisten "amateur" CMS und co. ansieht scheint das für viele noch neuland zu sein, also würde ich das nicht so selbstverständlich sehen.

  • Bilder cachen die Browser aber in der Regel ohne Probleme von sich aus schon sehr gut (außer man unterbindet das). Warum sollte man die serverseitig noch cachen (abgesehen davon, wenn es dynamische Bilder sind)?

    Hab ich nicht behauptet fnL, ich hab mich rein auf den Browser bezogen und wie maddin schon geschrieben hat kommt es auf den korrekten header an.


    Für alle die dazu mehr wissen wollen:
    http://www.smart-webentwicklun…unigen-3-browser-caching/


    Zu deiner 2 Anmerkung, es fällt der weg zum Datenbank-request weg. Nebenbei ist anzumerken das nicht jede Datenbankengine das zuletzt selektierte im Speicher hält, bzw diese Funktionalität anbietet.




    Zu Angular, das war nur eine Anmerkung zum Thema Templateengine. Aber mit Angular 1.x kannst du mit cacheFactory's die results deiner http requests cachen und templates lassen sich auch cachen. Bei der 2er Version geht das über eigene services und sessionStorage gut, aber template caching ist glaub ohne zusätzlichem Plugin nicht möglich.


    Naja Angular ist eigentlich recht stabil, die final version ist schon draußen für die 2er Version und alternativ gibt es auch genug andere Javascript basierende Frontend Frameworks und Templateengines.


    Das Problem hatte ich bis jetzt noch nicht, bei Ionic2 wurden die seiten relative schnell geladen bei Angular 2 und bei angularjs 1.x hatte ich bisher auch keine großen Probleme wenn die watcher gering gehalten werden.
    Aber man kann ja ein ladebalken einfügen, spätestens wenn alles geladen wurde profitiert der user und bei dem punkt können wir wieder auf das Thema mit dem browser caching aufgreifen.


    Aber im Endeffekt ist es immer schwer zu sagen was genau wann besser ist, beides hat seine vor- und nachteile und im Endeffekt kommt es drauf an welcher weg besser zu seines use case passt ^^