Probleme mit Google Cache und JS bzw. CSS

  • Hallo zusammen,

    mal wieder eine Frage bei der ich sprachlos und ratlos da sitze und keinen Schimmer habe, warum das so ist.

    Webseite: www. http://ferienunterkunft-bodensee.de/unterkuenfte/seite_1_1 .html

    So, auf der Seite werden ganz unten vor dem Body-Ende weitere Scripte geladen.

    Einmal direkt eingebunden

    PHP
    <script type="text/javascript" src="/js/master.js"></script>

    und ein paar weitere, nachdem die Seite fertig ist, also asynchron.

    PHP
    bindReady(function() { OnloadScriptLoader("/addons/gmap/map-20151127-min.js", "true"); });
    bindReady(function() { OnloadScriptLoader("/addons/lightbox/js/lightbox-20151130.js", "true"); });
    bindReady(function() { OnloadScriptLoader("/addons/socialbutton/js/socialbutton-20151123-min.js", "true"); });
    bindReady(function() { OnloadScriptLoader("/addons/cookieconsent/cookieconsent-20151128-min.js", "true"); });
    bindReady(function() { OnloadScriptLoader("/addons/piwik/piwik.php", "true", init_piwik); });

    Die "master.js" enthält wichtige Funktionen, daher ist die direkt eingebunden. Ohne die gehen auch die nachgeladenen Scripte nicht. Zudem laden die nachgeladenen Scripte ihrerseits nochmal Scripte und CSS-Files nach.

    Ruft man den Quelltext auf (nicht in Firebug, sondern direkt per Strg+U), dann sieht man das auch sehr schön. Im Head steht nur das wichtigste, die anderen nachgeladenen Scripte stehen dort nicht.

    Das Problem ist nun, dass im Google-Cache die nachgeladenen Scritpe bereist im Head stehen, also direkt eingebunden sind:
    *** Link veraltet ***

    Ruft man den Cache also auf, dann werden die ganzen Scripte ausgeführt, was zu Problemen führt, da die "master.js" ja noch fehlt und der eigentliche DOM ja auch noch. So wird z.B. die Google-Map-Api bereits gestartet, obwohl mein Map-Div noch gar nicht da ist. Google-Map-interne Scripte bereits geladen, obwohl das eigentlich GoogleMap-Object noch fehlt usw.

    Dazu kommt, dass die ganzen Scripte dann per "bindReady" vor dem Body-Ende noch mal aufgerufen werden. Es sind also alle Scripte und deren seinerseits geladenen Scripte und CSS doppelt. Das führt zu vielen weiteren Problemen.

    Ich raffe es einfach nicht. Woran liegt das denn? Habe nun viele Seiten durchgesehen und bei keiner ist das so. Selbst auf Seiten der gleichen Domain ist das nicht so, allerdings sind deren Caches auch teilweise vom 27.11. Das dürfte aber keine Rolle spielen, denn in Sachen Scripte laden wurde nichts mehr verändert.

    Hat einer eine Idee?

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Nachtrag: Auf der Startseite ist es z.B. nicht. Dort werden bis auf die Map, die gleichen Scripte nachgeladen. Man könnte also denken, das liegt an der Map. Nee, liegt es nicht. Denn auf der Seite vom Ort "Meersburg" sind 100% genau die gleichen Scritpe wie auf der oben im Beispiel, also auch die Map mit dabei. Aber auch hier ist es nicht und der Cache ist vom 3.12. *** Link veraltet ***

    Dazu kommt noch, dass bei beiden Beispielen z.B. die Meldung kommt, dass die Map nicht geladen werden kann, weil es die falsche Domäne ist. Das ist korrekt so, denn der Cache ist nicht freigegeben bei mir. Bei dem Beispiel oben wird sie aber dennoch geladen ??

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Wie vorher drin? Das war mal nicht auskommentiert, ist aber sicher schon mehrere Monate her. Zudem liegen die Files ja gar nicht in den Ordnern, sondern in /addons/...

    Zumal das was da eigebunden ist, teilweise ja gar nicht von mir ist.

    Das ist von mir bzw. kommt von meinen Scripten nachträglich:

    PHP
    <script type="text/javascript" async="" defer src="/addons/gmap/map-20151127-min.js" style=""></script>
    <script type="text/javascript" async="" defer src="/addons/lightbox/js/lightbox-20151130.js"></script>
    <script type="text/javascript" async="" defer src="/addons/socialbutton/js/socialbutton-20151123-min.js"></script>
    <script type="text/javascript" async="" defer src="/addons/cookieconsent/cookieconsent-20151128-min.js"></script>
    <script type="text/javascript" async="" defer src="/addons/piwik/piwik.php"></script>
    <link rel="stylesheet" type="text/css" href="/addons/lightbox/css/lightbox.css" />
    <link rel="stylesheet" type="text/css" href="/addons/socialbutton/css/socialbuttons-20151108.css" />
    <link rel="stylesheet" type="text/css" href="/addons/cookieconsent/dark-bottom-new.css" />


    Das "style" beim ersten JS ist aber nicht von mir....

    Das Zeug kommt aus der Map-Api, also das bindet Google nachträglich selbst ein:

    PHP
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/common.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/map.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/util.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/marker.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/overlay.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/onion.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps/api/js/ViewportInfoService.GetViewportInfo?1m6&amp;1m2&amp;1d44.4134872086433&amp;2d-10.28292560988291&amp;2m2&amp;1d51.19584239814056&amp;2d28.660920316907777&amp;2u6&amp;4sen-US&amp;5e0&amp;6sm%40330000000&amp;7b0&amp;8e0&amp;9b0&amp;callback=_xdc_._r8xmsr&amp;token=78494"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/stats.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps-api-v3/api/js/22/12a/controls.js"></script>
    <script type="text/javascript" charset="UTF-8" src="https://beispiel.rocks/beispiel.rocks/maps.googleapis.com/maps/api/js/AuthenticationService.Authenticate?1shttp%3A%2F%2Fwww.ferienunterkunft-bodensee.de%2Funterkuenfte%2Fseite_1_1.html&amp;4sAIzaSyA-D-hkj7823jkmsjk5p_M5et-4X4O1k&amp;callback=_xdc_._9du7to&amp;token=11111"></script>


    Genau genommen dürfte das letztere so überhaupt nicht da sein, noch nicht mal rein logisch / technisch, denn da fehlen die aufrufenden Scripte.... Eigentlich wird die "/addons/gmap/map-20151127-min.js" ausgeführt. Die lädt dann noch Markerdaten. Wenn die geladen sind, dann bindet sie die Map-Api ein (*** Link veraltet ***) und diese wird geladen. Ist die fertig, dann wird die Map gestartet. Und erst dann kommen die ganzen Files von Google.

    Hier ist also irgendwie alles verdreht, denn die eigentlich Map-Api steht ganz unten im Cache, im Body. Die wird also später ausgeführt als die eigentliche Scripte, die darauf aufbauen.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • invalidkey oder falsche domain. Kann es an dem Google Cache liegen? Denn das ist ja ne andere Domain...
    Ansonsten sehe ich auch oben eigebunden im Cache und nicht wie im original Quelltext. Wann haste denn das geändert? Google ist vielleicht da noch nicht aktuell?

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    - nun stolz rauchfrei - Ich denke also Bing ich!

    Support 24h Bereitschaft 0173 6107465 - NUR Für Kunden von SEO NW!

  • Doch doch, die Quelle ist aktuell. Der Text auf der Seite ist von gestern und die Zeitstempel der Files sind auch die aktuellen.

    Ja, das "invalidkey oder falsche domain" ist normal. Die Map betreibe ich über einen Key und der ist nur für meine Domäne freigegeben. Im Cache kommt dann die Warnung und die Map dürfte gar nicht angezeigt werden.

    "Ansonsten sehe ich auch oben eigebunden im Cache und nicht wie im original Quelltext. Wann haste denn das geändert? Google ist vielleicht da noch nicht aktuell?"
    Den Satz habe ich leider nicht wirklich verstanden. Was geändert? Was oben eingebunden?

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Für den Cache wird Google vermutlich ein volles Rendern inkl. JS etc. verwenden.

    Und da wird dann diese Zeile interessant:

    Code
    document.getElementsByTagName("head")[0].appendChild(script);

    Wenn Du dort den Tag "head" in "body" ändern würdest, solltest Du auch für die Cache Seite das erreichen, was Du willst. Denn derzeit wird für den Cache der komplett geladene Zustand abgebildet ohne den Weg dorthin. Dadurch sind aber die zusätzlichen async scripts im head und damit vor der master.js geladen. Also die stattdessen einfach in den body hängen und es sollte kein Problem mehr sein.

  • Hallo Chris,

    ähm ja gut, das wäre eine Möglichkeit, das alles selbst ans Ende zu hängen, aber die Frage ist ja eigentlich, warum das so ist? Ich meine, das ist ja nur bei der einen Seite so. Kannst jede andere nehmen und da ist der Cache wirklich nur der normale Quelltext und nicht bereits fertig gerendert.

    Zumal das ja auch keinen Sinn machen würde. Da werden ja teilweise bei anderen Scripten je nach Browser unterschiedliche Files nachträglich eingebunden. Die Erkennung muss im Browser des Users erfolgen und nicht im "Browser" vom Bot, das wäre ja unsinnig.

    Nachtrag... Nee, doch keine Möglichkeit. Die ganzen Scripte die die Map betreffen werden ja von der Map-Api nachgeladen und die gehört ja Google und nicht mir ;)

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Hm, jetzt schaut es wieder normal aus. Google hat sich wohl doch umentschieden. Neuer Cache ist da und es passt alles :) Frage mich da aber schon, daher eigentlich auch der Thread hier. Wenn so was schon beim Cache passiert, wer garanteirt eigentlich, dass der Bot nicht auch zu doof ist?

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • ähmm. syno.
    Das meinte ich eigentlich das der Bot trotz Cache das nicht ... wie soll ich das sagen. lies oben. Ich hatte gesagt das Google manchmal nicht aktuell ist trotz timestamp. So ähnlich hatte ich das eigtl ausgedrückt ( versucht - aber ok )

    Ich will das allerdings nicht breit treten, es liegt meiner Erfahrung nach in der Struktur von Informationen allgemein. Damit meine ich riesige Datenbanken.

    Wenn da steht das das der cache von x-x ist, muss das nicht heissen das er das auch ist.
    Viele Sachen sind da ( leider ) wichtig.

    • Erstmal das rendern und input. -> dürftest du woanders her kennen. Bei Google ist selbst das evtl ein problem.
    • Dann umsetzung des "caches"
    • x-y-z mit dem kram

    Das ist das minimalistischste was damit geschieht.
    cache allerdings... wird meiner erfahrung nach nicht direkt ausgewertet. das kann nach "§cache - Zeit" noch was dauern und so hatte ich das auch gemeint irgendwo am anfang.

    Das sind extrem komplexe datenstrukturen.

    wenn etwas möglich erscheint mach ich das, wenn das nicht klappt gehts ans unmögliche und ansonsten das undenkbare.

    - nun stolz rauchfrei - Ich denke also Bing ich!

    Support 24h Bereitschaft 0173 6107465 - NUR Für Kunden von SEO NW!

  • Alex, das hatte ich schon verstanden. Die Seite war aber aktuell, denn die Daten / Texte die da im Cache waren gab es einen Tag vorher noch nicht ;)

    Der kann also nicht sagen, Cache vom 5.12. und dann doch was vom 10.11. anzeigen, denn die Texte entstanden erst am 5.12. Aber selbst wenn dem so gewesen wäre, möglich ist es ja, hier wie gesagt nicht, aber möglich. Dann wäre es aber auch falsch, denn eine fertig gerendete Seite im Cache ist nunmal falsch. Und wenn der Bot genauso Mist baut, dann braucht man sich nicht über "schlechte Ladezeiten" oder sonstige Kuriositäten wundern, die Google so bemängelt, wenn da alles doppelt drinnen ist.

    zumal die eingebundenen Scripte von der Map ja auch von Google sind und nicht von mir. Da waren auch früher so nie eingebunden, denn das geht gar nicht. Guggst Du: *** Link veraltet ***

    Was mir aber noch aufgefallen war. Sah ja aus wie fertig gerendert, aber doch nicht ganz, denn es fehlte komplett das Adsense. Von dem war keines der zig Scripte vorhanden.

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(