Javascript cachen, möglich?

  • Javascript cachen, möglich?

    Hallo,

    ich habe ein kleines Problem. Brauche rat von einem Profi :)
    Ich cache meine PHP seite damit nicht so viele sql-abfragen enstehen.

    Quellcode

    1. <?
    2. $content = implode("", file("http://domain.com/news.php"));
    3. $fh = fopen("news.html", "w");
    4. fputs($fh, $content);
    5. fclose($fh);
    6. ?>


    das funktioniert auch super nur auf der Seite habe ich noch News von einer anderen Page via Javascript eingefügt.

    Quellcode

    1. <script type="text/javascript" src="http://www.domain.com/external.php?type=js"></script>
    2. <script type="text/javascript">
    3. <!--
    4. var max = 25;
    5. if (threads.length < max)
    6. {
    7. max = threads.length;
    8. }
    9. for(i = 0; i < max; i++)
    10. {
    11. if (threads[i].title.length > 45)
    12. {
    13. threads[i].title = threads[i].title.substring(0, 45) + '...';
    14. }
    15. document.writeln("- <a href=\"http://www.domain.com/showthread.php?t=" + threads[i].threadid + "\">" + threads[i].title + "</a><br>");
    16. }
    17. //-->
    18. </script>
    Alles anzeigen


    Leider schreibt er in die "news.html" immer diesen Code und nicht das was er ausgibt. D.h. ich verursache bei der anderen Seite unötigen traffic.

    kann man da was machen?

    gruss janni
  • Hi,
    da brauchst du nur den Pfad auf eine lokale Datei zu ändern und dort den Zugriff auf das JavaScripts des Gegenübers zu regeln.

    Quellcode

    1. <?php
    2. $file = "tmp.js";
    3. if(filemtime($file)<time()-86400) {
    4. $content = file_get_contents("http://www.domain.com/external.php?type=js");
    5. $fh = fopen("tmp.js", "w");
    6. fputs($fh, $content);
    7. fclose($fh);
    8. } else {
    9. $content = file_get_contents($file);
    10. }
    11. echo $file;
    12. ?>
    Alles anzeigen


    Einbinden tust du das dann mittels
    <script type="text/javascript" src="dein_caching_datei.php"></script>
    86400 sind die Sekunden eines Tages - so erhältst du 1x am Tag eine neue Version