screezeHead - dynamisches Einbinden von <head> informationen

Dieser Bereich dient dazu, eure Tricks und Erweiterungen vorzustellen, damit diese auch andere Anwender nutzen können. // This area can be used to publish your tricks and extensions to the APF to be used by other developers.
Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 13.09.2011, 19:27:28

Hmm ein Problem kommt mir allerdings gerade:
Wenn die Filter-Mechanismen wirklich on-the-fly passieren sollen (da es ja sein kann dass ein Filter vom User-Abhängigen Content einfügen soll) dann kann ich die Packages nicht gezippt Zwischencachen auf dem Server.
Soll ich das alles on-the-fly zippen dann?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von dr.e. » 13.09.2011, 23:19:44

An sich kannst du das auch on-the-fly zippen oder den Zip-Filter ans Ende (appendFilter()) hängen. Sofern der Krempel mit entsprechendem Cache-Zeiten versehen ist, ruft der Client die Resource nicht nochmal auf - es sei denn, der Benutzer fordert das via SHIFT+F5 an.
Viele Grüße,
Christian

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 13.09.2011, 23:30:31

Moment, ich komme nicht ganz mit, warum kann man das nicht gezipped zwischenspeichern?
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 09:24:08

Weil ich es ueber filter ermoeglichen moechte vor der auslieferung den content nochmal zu filtern, um z.B. uservariablen einfuegen zu koennen.

(wo sind bei meinem neuen androiden denn die umlaute??)

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 14.09.2011, 10:13:04

Ahh jetzt hab ichs :D Stand irgendwie ein bisschen auf dem Schlauch und habe gar nicht an die Filter gedacht

Edit:
Ich denke da wird dir nicht viel übrig bleiben als das on the fly zu zippen, aber theoretisch könnte man auch das bearbeitete Element zippen und speichern, dann muss man allerdings aufpassen, dass bei einer Änderung den Cache leert
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 11:27:15

Ich denke da wird dir nicht viel übrig bleiben als das on the fly zu zippen, aber theoretisch könnte man auch das bearbeitete Element zippen und speichern, dann muss man allerdings aufpassen, dass bei einer Änderung den Cache leert
Das Problem ist, falls jemand userabhängigen Inhalt in die JS Dateien einfügen will (z.B. eine User Id und Berechtigungsinfos) dann DARF das nicht auf dem Server gezippt hinterlegt werden, da sonst ein anderer User den gleichen Inhalt bekommt.

Ich könnte mir allerdings vorstellen in der Config einen Schalter einzubauen "FilterOnDemand", falls TRUE wird ungezippt gecached und erst on-the-fly gefiltert und gezippt, ansonsten wird das einmalig gefiltert und gezippt gecached.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 14.09.2011, 11:34:32

Dann müsstest du die Werte der Variablen irgendwie mit einbeziehen, so hätte man dann allerdings im "worst case" für jeden User ein eigens gezipptes Package.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 11:44:18

Ne, ich meinte eher dass der Entwickler bestimmen kann bei den Paketen, ob er ein on-demand Filter braucht, oder ob einmaliges Filtern reicht. Wenn on-demand wird NICHT gecached, jedenfalls nicht gezippt, und die Filter werden bei jedem Request ausgeführt, ansonsten wird einmalig für alle gefiltert und ein Paket gezippt gecached.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 14.09.2011, 11:57:42

Ja das war mir schon klar, meine Antwort war eher auf den ersten Abschnitt bezogen und nicht auf die Konfigurationsdatei, weil vielleicht gibt es ja irgendwie eine Lösung ohne Konfiguration?
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15


Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 12:58:13

Ok hab mich anders entschieden, da das Codetechnisch absolut hässlich wäre. User spezifische Inhalte gehören nicht in eine JS Datei, allein schon aus public-caching Gründen, die sollen weiterhin per plain-js in die Seite gerendert werden. Die Filter werden IMMER vor dem zippen ausgeführt und dann alles zusammen gechached.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Megger » 14.09.2011, 13:10:23

Ja ich denke das ist eine gute Lösung und kann inzwischen auch durch das priority Attribut sehr gut umgesetzt werden, davor war es ja dann doch etwas schwieriger :D
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 14:25:27

So, nach ein paar Problemen mit meinem lokalen Arbeitskopien... (Ich glaub ich brauch mal nen eigenen SVN Server für mein CMS...)
... habe ich die Änderungen nun in 1.15 eingecheckt.

Folgendes habe ich geändert:
  • JsCssInclusion und JsCssPackager Extension entfernt
  • Im htmlheader Namespace die nötigen Dateien eingefügt, und aus den 2 alten Actions eine einzige gemacht.
  • Packages laufen jetzt ebenfalls durch die FilterChain vor dem komprimieren.
  • Einzeldateien werden nun, wenn konfiguriert, geshrinkt ausgeliefert, und falls vom client unterstützt auch gezippt.
  • Die HtmlHeader Nodes wurden angepasst sodass die Links korrekt generiert werden.
Folgendes muss bei der Migration beachtet werden:

1. Configurationsdateien:
Die Actionconfig muss ab sofort unter config::extensions::htmlheader liegen. Die Actionbezeichnung habe ich von dem etwas kryptischen Name "sGCJ" oder so ähnlich auf "JsCss" geändert. Demzufolge muss diese nun so aussehen:

Code: Alles auswählen

[JsCss]
FC.ActionNamespace = "extensions::htmlheader::biz::actions"
FC.ActionClass = "JsCssInclusionAction"
Die Configs von JsCssInclusion und JsCssPackager wurden ebenfalls in den htmlheader Namespace verschoben, nach config::extensions::htmlheader::biz

An der DEFAULT_JsCssPackager.ini hat sich nichts geändert. Diese ist ausschließlich für die Packages zuständig.

Die DEFAULT_JsCssInclusion.ini Ist weiterhin für die FilterChains zuständig, außerdem wurde hier eine neue Section "General" mit dem Wert "EnableShrinking" definiert, welcher true|false beinhalten muss, und definiert, ob bei einfachen Dateien auch der Js bzw Css Code minimiert werden soll.

Code: Alles auswählen

[CssFilter]
MediaStreamLinkFilter.Namespace = "develovisioncms::cmscore::filter"
MediaStreamLinkFilter.Name = "MediaStreamLinkFilter"

;[JsFilter]

[General]
EnableShrinking = "true"
In obiger Config ist ein Beispielfilter aus meinem CMS definiert, da das APF jetzt KEINEN Filter mehr mitliefert, da die Funktion des Beispielfilters jetzt durch das Zusammenführen bereits standardmäßig vorhanden ist.

2. Links
Wenn die Links manuell generiert wurden (also nicht durch die HtmlHeader-Nodes), müssen diese nun umgeschrieben werden. Sofern die HtmlHeader-Nodes verwendet wurden sind hier keine Änderungen notwendig.

Die neuen Links sehen so aus:

Package (Typ: Css, Name: DefaultTheme):

Code: Alles auswählen

http://localhost/APF/DevelovisionCMS/~/extensions_htmlheader-action/JsCss/package/DefaultTheme.css
Einzeldatei (/apps/develovisioncms/themes/default/css/menu.css)

Code: Alles auswählen

http://localhost/APF/DevelovisionCMS/~/extensions_htmlheader-action/JsCss/path/develovisioncms_themes_default_css/type/css/file/menu

Eine aktualisierte Doku im Wiki werde ich nachher / morgen schreiben.

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Screeze » 14.09.2011, 14:51:42

Achso ja vorhin vergessen:

Als nächstes erweitere ich das ganze noch sodass ein <htmlheader:getbodyjs /> Tag möglich ist, der am Ende des Bodys platziert werden kann und dort noch JS Dateien abfragt.

Coach83
Beiträge: 271
Registriert: 13.05.2010, 17:33:12
Kontaktdaten:

Re: screezeHead - dynamisches Einbinden von <head> informati

Beitrag von Coach83 » 14.09.2011, 14:54:25

funktioniert soweit.. habs grad nach Deiner Anleitung umgestellt. Wie besprochen fehlt die Möglichkeit, JS ans Ende des Body´s zu verlegen :-)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste