Cache löschen bei user erzwingen?

  • Moin,


    gehen wir mal davon aus ich habe eine Seite gebastelt mit HTML + CSS!


    dort habe ich etwas text in einer box mit Hintergrundfarbe, ein user besucht meine Seite später ändere ich etwas an der CSS datei und lade sie hoch! der user kehrt auf meine Seite zurück und sieht die alte version :(


    Meine fragen sind jetzt


    1. Wie lange bleibt die Seite beim user gecached bis er die neue sieht wenn er selber kein cache löscht?
    2. Wie kann ich es erzwingen das ein User einmalig die Seite neu laden muss? man kann ja per htaccess einstellen das es jedesmal neu geladen werden muss aber das ist ja nicht optimal besser wäre es einmalig, bei wordpress gibt es plugins wo man den cache serverseitig löschen kann wie setzt man sowas um bei reinen HTML CSS seiten?

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von MarcelDE ()

  • Wie lange bleibt die Seite beim user gecached bis er die neue sieht wenn er selber kein cache löscht?

    Wahrscheinlich so lange bis sie überschrieben wurde oder gelöscht

    Wie kann ich es erzwingen das ein User einmalig die Seite neu laden muss? man kann ja per htaccess einstellen das es jedesmal neu geladen werden muss aber das ist ja nicht optimal besser wäre es einmalig, bei wordpress gibt es plugins wo man den cache serverseitig löschen kann wie setzt man sowas um bei reinen HTML CSS seiten?

    Seite neu laden kannst du ja Theoretisch mit JS erzwingen.

    Aber wozu ?

    Wenn du willst das jedesmal die Seite komplett geladen wird ( ohne Cache ) dann muss man das den Browser mitteilen.


    Das du als Webseitenbetreiber deinen Usern die Cache löschen willst ist ja nett , aber wahrscheinlich nicht möglich.

    Damit könntest du ja wichtige Daten löschen die der User gecached hat.

    Da kannst den Browser sagen das die Daten von deiner Webseite neu gecached werden , doch alles andere halte ich für nicht möglich.


    Könnte aber auch sein das ich da falsch liege.

  • hmm und wie macht man das mit einer reinen HTML css Seite ohne js?


    Ich mach ne Änderung und die User bekommen das nie zu sehen solange sie ihren Cache nicht löschen?


    Kann mir kaum vorstellen das es dafür keine Lösung gibt, seiten müssen ja aktualisiert werden und ich will das Cachen nicht deaktivieren ist ja grundsätzlich ne gute Sache.


    Das muss doch möglich sein stellt euch vor ich bau nen Kunden ne Seite für sein handwerksbetrieb und er möchte das die Telefonnummer geändert wird muss ich den dann sagen sie müssen drauf hoffen das die user ihren Cache löschen um die neue nummer zu Sehen?

  • Wie ich schon schrieb möchte ich den Cache ja nicht deaktivieren sondern eher eine Lösung wie ich es von WordPress kenne mit Plugins, da konnte ich den Cache vom Server löschen und User mussten einmalig die Seite neu laden.


    Das kanns ja nicht sein das man seine Seite hochläd user drauf gehen und nie mehr die Aktualisierungen mitbekommen. Auch wenn es nur HTML css ist

  • Ich verstehe das nicht ganz.

    Du möchtest wenn ich als Besucher deiner Seite besuche ,immer das lese was du auch aktualiesiert hast und nix aus der Cache geholt wird ?

    Das ist doch richtig oder ?

    Dann deaktiviere das Cachen einfach.

    Dann sehen die User auch das was du gerade auf den Server hast.

    Wenn du dauer Besucher aber da Cachen erlauben willst und die Cache nur dann aktualiesiert wird wenn neue Daten hochgeladen wurde dann solltest du dir was mit Php , cookie und oder Localstorage einfalllen lassen damit der User die neuen Themen auch sehen können und nicht den alten Kram aus der Cache holt.


    So ungefähr wäre mein Ansatz

    Code
    1. if (erster besucher){
    2. //cachen
    3. }else if(alter besucher){
    4. // abfragen was wahr letztes Thema was er gelesen / gecacht hat
    5. if (altes Thema gleich aktuelles Thema){ // Abfrage aus Cookie,localstorage oder Db
    6. // themen aus cache holen
    7. }else if(altes Thema ungleich neues Thema){
    8. // Neu Daten holen und neu cachen
    9. }
    10. }

    *( Kein echter Code zum Kopieren)


    Es gibt aber auch noch andere Wege die dir andere vieleicht besser erklärten können

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von basti1012 ()

  • Ja genau ich will sogesehen das sie die gecachte version lesen bis ich ein Signal schicke zB bitte neu laden es gibt was neues auf der seite, ich lerne grade HTML und css deswegen wollte ich es auch so versuchen zu lösen ohne php Javascript


    Es ist praktisch ein übungsprojekt und mir ist das aufgefallen.

  • Du verwechselst da was . WordPress hat seinen eigenen Cache, den kann man serverseitig löschen. Aber der Browser hat ebenfalls seinen Cache, und den kannst du nicht löschen.

  • Frontend-Frameworks wie Angular (und ich denke mal die anderen machen das auch so) ändern die Dateinamen der css-Files (und js, was für Dich aber wohl nicht relevant ist), bei neuen Versionen, d.h. wenn du eine neue Version Deiner App erstellst wird dem css-Dateinamen eine bestimmte Zeichenfolge angehängt. Das sieht dann so aus:


    Code
    1. <meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate">
    2. <meta http-equiv="Pragma" content="no-cache">
    3. <link rel="stylesheet" href="styles.6c571124b41f97042055.css"></head>

    So was kannst du natürlich auch von Hand machen. Ist halt etwas mühsamer.

  • Du verwechselst da was . WordPress hat seinen eigenen Cache, den kann man serverseitig löschen. Aber der Browser hat ebenfalls seinen Cache, und den kannst du nicht löschen.

    Das verwechsel ich nicht das ist mir so bekannt nur hat es eben den effekt das die user die Aktualisierung sehen.


    Frontend-Frameworks wie Angular (und ich denke mal die anderen machen das auch so) ändern die Dateinamen der css-Files (und js, was für Dich aber wohl nicht relevant ist), bei neuen Versionen, d.h. wenn du eine neue Version Deiner App erstellst wird dem css-Dateinamen eine bestimmte Zeichenfolge angehängt. Das sieht dann so aus:


    Code
    1. <meta http-equiv="Cache-control" content="no-cache, no-store, must-revalidate">
    2. <meta http-equiv="Pragma" content="no-cache">
    3. <link rel="stylesheet" href="styles.6c571124b41f97042055.css"></head>

    So was kannst du natürlich auch von Hand machen. Ist halt etwas mühsamer.

    Ja das ist logisch neuer name = neue datei aber was ist mit den html seiten wenn man da was ändert? und wenn man 30 HTML seiten hat müsste man das jedesmal in 30 dateien ändern =O


    Wie machen es denn leute die eine reine HTML seit haben? gibs da kein Standard oder sowas finde das schon komisch.

  • Man kann den Cache des lokalen Client nicht löschen, aber ihn zwingen, die Seite nicht aus dem Cache zu holen.

    Das geht aber mit reinem HTML nicht sehr clever, dazu muss man Header Informationen mitsenden, das geht nur über eine Scriptsprache, wie PHP.


    Es gibt aber eine Möglichkeit, das CSS zu versionieren:

    HTML
    1. <link rel="sytlesheet" href="style.css?v1.0">
    HTML
    1. <link rel="sytlesheet" href="style.css?v1.1">

    Dann ist es für den Browser eine neue Datei, die er nicht im Cache hat.

    Nicht sehr schick, funktioniert aber.


    und wenn man 30 HTML seiten hat müsste man das jedesmal in 30 dateien ändern

    Wenn Du beim Cache clever sein willst, solltest Du beim Aufbau Deiner Website damit anfangen, dann brauchst Du das nur in einer einzigen Datei genau einmal ändern.

  • Nein ich meine die CSS wenn was geändert wird ist mit der Version geklärt aber wenn ich in den HTML documenten was ändere was ist dann damit?


    und ich meine wenn ich jetzt in im head den link auf v1.1 ändern muss, dann muss ich es ja auch allen 30 html seiten machen, wenn man soviel hat ist nur ein beispiel!

  • und ich meine wenn ich jetzt in im head den link auf v1.1 ändern muss, dann muss ich es ja auch allen 30 html seiten machen, wenn man soviel hat ist nur ein beispiel!

    Deswegen schrieb ich ja: Clever aufbauen die Website. Nur HTML und CSS ist halt ausreichend für Layout und Design, aber Server seitig sollte man schon dynamischen Content erstellen, dann hast Du einen Header(!), den Du immer einbindest. Daraus folgt: Du brauchst die Angabe nur einmal ändern, fertig!


    Mit HTML und CSS allein kommst Du halt nicht weiter.

    Du kannst dem Browser auf die Art nicht mitteilen, dass er die Seite nicht aus dem Cache laden soll.

  • Deswegen schrieb ich ja: Clever aufbauen die Website. Nur HTML und CSS ist halt ausreichend für Layout und Design, aber Server seitig sollte man schon dynamischen Content erstellen, dann hast Du einen Header(!), den Du immer einbindest. Daraus folgt: Du brauchst die Angabe nur einmal ändern, fertig!


    Mit HTML und CSS allein kommst Du halt nicht weiter.

    Du kannst dem Browser auf die Art nicht mitteilen, dass er die Seite nicht aus dem Cache laden soll.

    Dann macht es ja heutzutage garnkein sinn mehr eine Seite nur mit HTML/CSS ins Web zu stellen auf den es Aktualisierungen gibt.

  • Dann macht es ja heutzutage garnkein sinn mehr eine Seite nur mit HTML/CSS ins Web zu stellen auf den es Aktualisierungen gibt.

    Richtig, reines HTML/CSS ist für statische Seiten, die nur in großen Abständen vielleicht mal geändert werden, sinnvoll. Werden Seiten regelmäßig geändert, sollte man auf andere Techniken umsteigen.