Geschwindigkeit des JavaScript AutoFootnoters bei vielen Fußnoten (> 1000)
Hobbyhistoriker
- javascript
Guten Tag,
ich nutze auf meiner Webseite den AutoFootnoter auf JavaScript Basis, wie er hier im Tutorial behandelt wurde: https://wiki.selfhtml.org/wiki/JavaScript/Tutorials/Auto-Footnoter
Das funktioniert auch einwandfrei und ich bin sehr zufrieden damit.
Nun habe ich aber einige Seiten (Sammlungen von Daten und Ereignissen), auf denen ich bis zu 1500 Fußnoten vorgesehen habe. Das verlangsamt das Laden der Seite deutlich (mehrere Minuten), da natürlich erstmal alle Fußnoteneinträge gesucht und umgewandelt werden müssen. Gibt es hier eine Möglichkeit, den Prozess zu beschleunigen (außer den Umfang der Fußnoten zu verkleinern, was ich schon am Vorbereiten bin)?
Danke schonmal!
Hallo Hobbyhistoriker,
ohne eine genauere Analyse des Fußnotengenerators kann man nicht so genau sagen, ob man einen effizienteren Algorithmus finden kann. Hast Du die Popups aktiviert? Wird es besser, wenn Du sie deaktivierst?
Aber ich muss schon fragen: welche HTML Seite benötigt 1500 Fußnoten? Man rechnet (sagt eine schnelle Google Suche) bei wissenschaftlichen Texten mit 5-10 Fußnoten pro Seite, das wären dann 200 Seiten Drucktext. Die html Datei hat dann eine Größe im fetten Megabytebereich. Das ist deutlich zu viel, niemand liest das in einem Seitenabruf. Es sind ja
Sammlungen von Daten und Ereignissen
Das ruft nach einer Aufteilung nach Zeiträumen. Oder einem PHP Script, das den Abruf einer gefilterten Version erlaubt, das setzt natürlich entsprechendes Knowhow bei Dir voraus.
Wenn's denn unbedingt eine Einzelseite sein soll, dann bau Dir ein Tool, das Du in deine Veröffentlichungs-Toolchain einbaust und das die Arbeit des Autofootnoters vor der Veröffentlichung genau einmal durchführt. Dafür kannst Du natürlich nicht den Auto-Footnoter aus dem Wiki verwenden, das muss ein anderes Programm erledigen.
Für eine Druckdarstellung könnte auch eine vorgerenderte PDF-Version der Seite interessant sein (die Du im Zweifelsfall in deinem Browser mit einem Print-To-PDF Druckertreiber erstellst). Es hängt natürlich von der Änderungsfrequenz des Seiteninhaltes ab.
Rolf
Hallo Rolf,
vielen Dank für die schnelle Antwort!
Hast Du die Popups aktiviert? Wird es besser, wenn Du sie deaktivierst?
Die sind bereits deaktiviert.
Aber ich muss schon fragen: welche HTML Seite benötigt 1500 Fußnoten? Man rechnet (sagt eine schnelle Google Suche) bei wissenschaftlichen Texten mit 5-10 Fußnoten pro Seite, das wären dann 200 Seiten Drucktext.
Das ist richtig. 1500 ist hier auch das obere Maximum. Zum Hintergrund: Ich erarbeitete eine Art Chronik in tabellarischer Form zu lokalhistorischen Themen, beginnend ab dem Jahr 1800 bis heute. Die Zeiträume habe ich dabei zunächst so gewählt, dass verschiedene "Kernereignisse" als Anfangs- und Endzeitpunkt einer Zeitperiode fungieren. Dabei sollen zu den einzelnen Ereigniszeitpunkten die vorliegenden Quellen, die auf dieses Ereignis verweisen, so vollständig wie möglich angegeben werden. Das können durchaus mal 20 pro Ereignis sein. Das ist einer der Aspekte, der die Fußnoten nach oben treibt. Die hohe Anzahl an Fußnoten erklärt sich auch noch dadurch, dass ich nicht - wie z. B. bei Nutzung eines Literaturmanagementprogramms wie Citavi - die Möglichkeit habe, mehrmals auf dieselbe Fußnote bzw. Quelle zu verweisen. Stattdessen muss ich jede Quelle - auch wenn ich sie identischerweise bereits eingefügt habe - erneut angeben. Und diese Quelle wird dann auch durch den Auto Footnoter genauso behandelt wie beim ersten Mal.
Das ruft nach einer Aufteilung nach Zeiträumen. Oder einem PHP Script, das den Abruf einer gefilterten Version erlaubt, das setzt natürlich entsprechendes Knowhow bei Dir voraus.
Wie oben schon gesagt: In (grobe) Zeiträume ist das ganze schon aufgeteilt. Ich überlege derzeit, das alles auf Jahrzehnte herunterzubrechen. Aber da habe ich auch das Problem, dass bereits jetzt mit meiner Grobaufteilung einzelne Zeiträume von weniger als zehn Jahren (z. B. 1939-1945) mehr als 500 Fußnoten aufweisen. In dem Zusammenhang wäre vielleicht eine Aufteilung auf einzelne Jahre sinnvoll, das ließe sich vielleicht mit PHP oder jQuery realisieren. Allerdings habe ich auch vor, einige Fließtexte zu konkreten Einzelaspekten zu verfassen. Da werde ich je nach Umfang mit der gegenwärtigen Methode auch wieder auf an die 500 Quellen kommen. Ich hatte ansatzweise mal überlegt, die Quellen serverbasiert einzufügen, indem ich sie zuerst in eine MySQL-Datenbank einbringe und dann per PHP anzeigen lasse. Das war aber nicht sehr erfolgreich.
Für eine Druckdarstellung könnte auch eine vorgerenderte PDF-Version der Seite interessant sein (die Du im Zweifelsfall in deinem Browser mit einem Print-To-PDF Druckertreiber erstellst). Es hängt natürlich von der Änderungsfrequenz des Seiteninhaltes ab.
Es sollte eigentlich schon eine reine Internetseite bleiben. Eine gedruckte Darstellung hatte ich nicht geplant.
Hallo Hobbyhistoriker,
magst Du mal einen Link auf deine Seite verraten?
dass ich nicht - wie z. B. bei Nutzung eines Literaturmanagementprogramms wie Citavi - die Möglichkeit habe, mehrmals auf dieselbe Fußnote bzw. Quelle zu verweisen. Stattdessen muss ich jede Quelle - auch wenn ich sie identischerweise bereits eingefügt habe - erneut angeben
Der Autofootnoter wird das nicht können, das denke ich auch. Das hängt aber auch von der Art des Verweises ab - wenn Du auf exakte Textstellen verweist, wirst Du vermutlich fast keine Quellenangabe recyclen können. Oder doch?
Wie ist deine Seite denn generell aufgebaut? Ist das alles von Hand erstellt oder werden die Seiten mit PHP aus einer DB generiert? Bei einer PHP Generierung könnte man vermutlich einiges am Server vorbereiten.
Rolf
Hallo Rolf,
magst Du mal einen Link auf deine Seite verraten?
Das kann ich derzeit nicht, da ich derzeit nur offline testen kann.
Der Autofootnoter wird das nicht können, das denke ich auch. Das hängt aber auch von der Art des Verweises ab - wenn Du auf exakte Textstellen verweist, wirst Du vermutlich fast keine Quellenangabe recyclen können. Oder doch?
Ich wüsste nicht, wie.
Wie ist deine Seite denn generell aufgebaut? Ist das alles von Hand erstellt oder werden die Seiten mit PHP aus einer DB generiert? Bei einer PHP Generierung könnte man vermutlich einiges am Server vorbereiten.
Die Daten in der Tabelle werden ausschließlich von Hand eingegeben (klassische HTML-Tabelle).
Ich habe jetzt mal probeweise das CSS-basierte Fußnotenschema (CSS/Tutorials/Fußnoten_mit_CSS) ausprobiert. Das funktioniert zumindest schneller als der JavaScript Footnoter, ist aber natürlich weniger dynamisch. Für meine Zwecke wäre das aber dennoch erstmal ausreichend. Ich werde die Seiten jetzt erstmal darauf umarbeiten und parallel weiter an einer dynamischen Lösung - wie auch immer die aussehen könnte - arbeiten.
Hallo,
Wie ist deine Seite denn generell aufgebaut? Ist das alles von Hand erstellt oder werden die Seiten mit PHP aus einer DB generiert? Bei einer PHP Generierung könnte man vermutlich einiges am Server vorbereiten.
Die Daten in der Tabelle werden ausschließlich von Hand eingegeben (klassische HTML-Tabelle).
Ums Eingeben gehts nicht, sondern um das Servieren bzw. Ausliefern. Wenn der Server nur eine vorhandene Datei ausliefert, ist er gar nicht ausgelastet. Er könnte aus einzelnen Bausteinen eine (Teil-)Tabelle basteln und diese dann gleich servieren…
Gruß
Kalk
Hallo Tabellenkalk,
wenn man einen durchgängigen Fußnotenanhang will, hilft das aber auch nicht. Wenn man pro Ereignis einen „Dokument“ (DB-Eintrag oder Textdatei in XML, JSON oder YAML Format) hätte, dann könnte man die von einem PHP Script lesen lassen. Dabei könnte man Tabellen-Anteil und Fußnoten-Teil automatisch separieren und in zwei Gruppen sammeln (bzw. den Tabellenanteil direkt ausgeben und nur die Fußnoten erstmal sammeln). Die Nummerierung kann man dabei auch gleich bilden. Nach Ende der Tabelle haut man dann alle Fußnoten raus.
Wenn man jedes Ereignis am Server in einem eigenen Dokument hat, kann man auch durch PHP eine automatische Paginierung bilden lassen, oder eine Separierung auf Jahre - unterschiedliche Darstellungen je nach Userwunsch sind möglich.
Soll es bei einer manuellen Verwaltung bleiben, wäre es vielleicht einfacher und performanter, die Fußnoten zu einem Eintrag ausschließlich als Popups zu zeigen, bzw. in einer Ausklappsektion (<details>) zu diesem Eintrag.
Nur mal so als Gedankenanstoß...
Nachteil: details/summary wird von IE und Edge nicht unterstützt, dort ist der Text immer sichtbar, oder man braucht einen Polyfill dafür.
Rolf
@@Rolf B
Nachteil: details/summary wird von IE und Edge nicht unterstützt
?? Natürlich unterstützt Edge details
/summary
.
Hätte mich auch sehr gewundert, wenn die bei MS die Unterstützung extra aus Chromium ausgebaut (im Sinne von: entfernt) hätten.
LLAP 🖖
@@Gunnar Bittersmann
Nachteil: details/summary wird von IE und Edge nicht unterstützt
?? Natürlich unterstützt Edge
details
/summary
.Hätte mich auch sehr gewundert, wenn die bei MS die Unterstützung extra aus Chromium ausgebaut (im Sinne von: entfernt) hätten.
Ist der der Vergeber des Minuspunktes hier mausgerutscht?
Ansonsten bitte ich um eine Begründung, warum meine völlig korrekte Antwort negativ bewertet wurde.
LLAP 🖖
Hallo Gunnar,
ich war's nicht, aber ich nehme an, dass es den dafür gab, Edge und Chrodge gleichzusetzen.
Es gab auch mehrere unverchromte Kanten in Win10...
Rolf
Hallo,
Edge und Chrodge gleichzusetzen.
Das wäre dann Eme?
Gruß
Kalk
@@Rolf B
ich war's nicht, aber ich nehme an, dass es den dafür gab, Edge und Chrodge gleichzusetzen.
Es gab auch mehrere unverchromte Kanten in Win10...
Wenn von $Browser die Rede ist, ist davon auszugehen, dass die aktuelle Version gemeint ist. Wenn man sich auf eine alte Version bezieht, muss man das angeben.
LLAP 🖖
Hallo Gunnar,
Chrodge (oder Edmium?) beginnt gerade erst mit dem Rollout und wird noch etwas brauchen, bis er überall angekommen ist.
Die Daten bei Caniuse enthalten ihn noch nicht, das hat mich zu diesem Hinweis gebracht. In einem Jahr kann man nochmal gucken.
Wieauchimmer - die Frage ist, ob man details/summary sinnvoll polyfillen kann oder ob die vorhandenen Polyfills Schlangenöl sind.
Rolf
Hallo Rolf,
Wieauchimmer - die Frage ist, ob man details/summary sinnvoll polyfillen kann oder ob die vorhandenen Polyfills Schlangenöl sind.
da gibt es einige Versionen. Hier findest du eine einfache Variante.
Gruß
Jürgen
Hallo,
Wenn von $Browser die Rede ist, ist davon auszugehen, dass die aktuelle Version gemeint ist. Wenn man sich auf eine alte Version bezieht, muss man das angeben.
Da hier Beiträge archiviert werden und somit aktuelle Versionen irgendwann alte Versionen sind, muss man immer die Version angeben…
Gruß
Kalk
@@Tabellenkalk
Wenn von $Browser die Rede ist, ist davon auszugehen, dass die aktuelle Version gemeint ist. Wenn man sich auf eine alte Version bezieht, muss man das angeben.
Da hier Beiträge archiviert werden und somit aktuelle Versionen irgendwann alte Versionen sind, muss man immer die Version angeben…
Da hier Beiträge mit Datum versehen sind, muss man das vielleicht doch nicht. 😜
LLAP 🖖
Hallo,
Da hier Beiträge mit Datum versehen sind, muss man das vielleicht doch nicht. 😜
Ja, diese Replik war vorhersehbar. Du hast wahrscheinlich auswendig parat, wann welche Version auf welchem OS grad aktuell war… 😜
Gruß
Kalk
Hallo
Nachteil: details/summary wird von IE und Edge nicht unterstützt
?? Natürlich unterstützt Edge
details
/summary
.Hätte mich auch sehr gewundert, wenn die bei MS die Unterstützung extra aus Chromium ausgebaut (im Sinne von: entfernt) hätten.
Der Edge auf Chromium-Basis ist mit Datum von heute (2020-01-27) nicht annähernd vollständig ausgerollt. Keine Ahnung, wie die Verteilung abseits der aktiven Update-Verweigerer ist, bei Windows-Nutzern, zu deren Rechnern ich bis einschließlich heute Zugang hatte, ist der jedenfalls noch an keinem Rechner da.
Nicht, dass der von irgendwem aktiv genutzt würde, aber ich wollte mal schauen, ob irgendwo schon das neue Icon zu sehen ist. Ist es nicht.
Tschö, Auge