Ankündigung

Einklappen
Keine Ankündigung bisher.

Cache deaktivieren unter Xubuntu 16.04 / XAMPP 5.6.21-0

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cache deaktivieren unter Xubuntu 16.04 / XAMPP 5.6.21-0

    um das lokale Caching zu verhindern ist bereits Folgendes gescheitert:
    - Deaktivierung des Firefox-Caches
    - Deaktivierung von Modulen in der httpd.conf:
    # LoadModule cache_module modules/mod_cache.so
    # LoadModule cache_disk_module modules/mod_cache_disk.so
    - https://www.php.de/forum/webentwickl...em-cache-laden

    PHP-Code:
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
    header("Content-Type: application/xml; charset=utf-8"); 
    session_start(); 

    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: no-cache'); 
    header('Last-Modified: ' gmdate('D, d M Y H:i:s') . ' GMT'); 
    header('Expires: Fri, 06 Jun 1975 15:10:00 GMT'); 
    session_start(); 
    Weiß jemand wie es geht ?
    Gruß Anno

  • #2
    Welches Caching soll denn verhindert werden und vor allem, warum?.
    Grundsätzlich kann man das Caching von Dateien nicht mit dem HTTP Header beeinflussen. Oder anders gesagt, wenn der Browser eine Datei cachen will dann macht er das auch.

    Kommentar


    • #3
      Zitat von protestix Beitrag anzeigen
      Welches Caching soll denn verhindert werden und vor allem, warum?.
      Gute Frage.
      Noch eine Frage:
      Wenn z.B. das Bild einer Webcam nur alle 10 Minuten aktualisiert wird, warum soll dann das Bild alle paar Sekunden neu vom Server geholt werden?

      Zitat von protestix Beitrag anzeigen
      Grundsätzlich kann man das Caching von Dateien nicht mit dem HTTP Header beeinflussen. Oder anders gesagt, wenn der Browser eine Datei cachen will dann macht er das auch.
      Sind auch meine Erfahrungen, das sich nicht alle Browser immer an solche Vorgaben halten und so ihre eigene Linie fahren.
      Es gibt jedoch ein Umstand an denen sich alle Browser halten eine Seite neu zu laden. Das ist wenn Sie eine neue URL präsentiert bekommen.
      Gängige Praxis ist es eine Zufallszahl an die URL zu hängen. Hierbei wird dann das Bild oder der entsprechende Inhalt bei jeden Request immer neu geladen.
      Dies ist jedoch nicht immer notwendig, wie beim Beispiel Webcam. Da reicht es aus, wenn sich die URL nur alle X Sekunden ändert.
      Dies kann durch einen kleinen Trick erreicht werden:
      PHP-Code:
      $cacheTimeSec 60;
      $url .= "?c=".(int)(time()/$cacheTimeSec); 
      Im obigen Beispiel wird dem Browser jeweils zu vollen Minute (Serverzeit) eine neue URL präsentiert. Nur wenn die Minute vorbei ist, würde für unser Beispiel das Bild neu geladen werden.
      Zwischendurch holt der Browser das Bild aus dem Cache.

      Sind im $url schon Parameter vorhanden, ist der obige Code entsprechen anzupassen.

      Die Idee dazu ist bereits hier publiziert worden. Da ist auch Code für Javascript zu finden.

      LG jspit


      Kommentar


      • #4
        Nach Änderung des Quellcodes

        PHP-Code:
        <html>
        <head>
        <title>Test 12</title>
        <body>
        <h1>Test 12</h1>
        <?php
        error_reporting
        (E_ALL & ~E_NOTICE);
        $var1 0$var2 0$var3 0$var4 0$var5 0;
        sind etliche BrowserRefreshes erforderlich, um das Ergebnis im Browser zu sehen. Durch Cache-Deaktivierung ginge das möglicherweise mit einem Klick.

        Gruß Anno

        Kommentar


        • #5
          Zwei mal session_start() ist auf jeden Fall falsch. Dreh mal dein error_reporting hoch. http://php-de.github.io/jumpto/faq/#debugging

          Da fehlt aber noch einiges. Dieses Script gibt ja nichts aus außer statischen HTML-Code. Was sollte sich da ändern? Ausserdem gehört PHP error_reporting ganz zum Beginn der Datei. HTML ist nur die Ausgabe und kommt ganz zum Schluss, siehe EVA Prinzip. http://php-de.github.io/jumpto/eva-prinzip/


          PHP-Code:
          $var1 0$var2 0$var3 0$var4 0$var5 0
          Außerdem gäbe es dafür eine Kurzform, zur Info.
          PHP-Code:
          $var1 $var2 $var3 $var4 $var5 0
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Es ist nur ein kleiner Ausschnitt aus dem Quellcode. Das Skript funktioniert. Von Fehlern ist keine Rede. Es geht lediglich um die Deaktivierung des Caches.

            Kommentar


            • #7
              Von Fehlern ist keine Rede
              In #1 ist es aber einer, wenn du den Code so 1:1 verwendest.

              EDIT: Kannst du ev. mal die Fragen von oben alle beantworten? Das würde auch helfen.

              Was passiert, wenn du diesen Code in einer Datei laufen lässt und ca. jede Sekunde mal aktualisiert? Ändert sich der Code?

              PHP-Code:
              <?php

              error_reporting
              (-1);
              ini_set('display_errors'1);

              date_default_timezone_set('Europe/Berlin');
              echo (new 
              DateTime)->format('Y-m-d h:i:s');
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Welches Caching soll denn verhindert werden und vor allem, warum?.
                warum ? Um das Ergebnis von Quellcodeänderungen mit einem BrowserRefresh-Klick zu sehen.
                Welches Caching ? Vermutlich reichen das Caching von Browser und WebServer für diesen Zweck.


                Was passiert, wenn du diesen Code in einer Datei laufen lässt und ca. jede Sekunde mal aktualisiert? Ändert sich der Code?
                Die Browserausgabe aktualisiert die Zeitanzeige (Sekunden) quasi sofort.
                Erweitere ich den Code um
                PHP-Code:
                <?php
                error_reporting
                (-1);
                ini_set('display_errors'1);
                date_default_timezone_set('Europe/Berlin');
                echo (new 
                DateTime)->format('Y-m-d h:i:s');
                ?>
                <html>
                <head>
                <title>Test</title>
                <style> table, td, th { border: 1px solid black; } </style>
                </head>
                <body>
                <h1>Test 2</h1>
                </body>
                </html>
                sind eigenartigerweise 8 bis 12 BrowserRefresh-Klicks erforderlich, um die Änderung von <h1>Test 1</h1> zu <h1>Test 2</h1> anzuzeigen.

                Kommentar


                • #9
                  Sorry vorab für meine derben Worte.

                  Wenn du dem Browser invaliden HTML Code zum Fressen vorwirfst, wundert es mich nicht, das dieser mehrmals Schlucken muss ...

                  Kommentar


                  • #10
                    ich denke du hast n zusätzliches problem, wenn ich den link oben richtig deute.
                    das man im browser zurück gehen kann und die seite dabei ausm cache kommt, kannste so nicht verhindern..(glaube ich)

                    sobald man auf einen link klickt, aktion ausführt oder eine weitere interne url aufruft, lässt du den login checken ggf. zur loginseite umleiten. das sollte eine standardfunktion sein.

                    außerdem kannst du ja nach dem logout via js die browserhistory verändern.

                    und schon brauchst du dich nicht weiter drum kümmern. oder gibts noch andere probleme?
                    hardcore will never die

                    Kommentar


                    • #11
                      @jspit #9 - was genau ist invalid an dem HTML-Code ?

                      Kommentar


                      • #12
                        z.B. Ausgabe vor html body Tag.
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Alles funktioniert - Danke an Alle.
                          Gruß Anno

                          Kommentar

                          Lädt...
                          X