porno porno izle rokettube
Ergebnis 1 bis 15 von 15

Thema: Enviroment / Minify

  1. #1
    Neuer Benutzer
    Registriert seit
    19.05.2010
    Beiträge
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Enviroment / Minify

    Hallo zusammen

    In meinem nächsten ZF-Projekt möchte ich die JS- und CSS-Files vorkomprimieren. Ich nutze dafür ein bower-Package. Das funktioniert bereits und bereitet keine Probleme. Dabei durchlaufe ich alle JS- und CSS-Files und erstelle eine neue, komprimierte Datei:

    *.js => *.min.js
    *.css => *.min.css

    Das heisst, jedes JS und CSS-File ist doppelt vorhanden. Einmal unkomprimiert und einmal komprimiert.

    Nun möchte ich in der Entwicklungs-Umgebung die unkomprimierten Dateien laden und in der Produktiv-Umgebung die komprimierten. Wie stelle ich das an?

    PS: Habe irgendwo gelesen, dass ZF auch JS- und CSS-Files komprimieren kann, aber das passiert zur Laufzeit und das will ich grundsätzlich nicht.

    Gruss

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von rniederer Beitrag anzeigen
    Nun möchte ich in der Entwicklungs-Umgebung die unkomprimierten Dateien laden und in der Produktiv-Umgebung die komprimierten. Wie stelle ich das an?
    Beim ZF1 einfach in der „Bootstrap“-Klasse die Umgebung abfragen, die Ressource „Zend_View“ holen und per „HeadScript“-View-Helfer die entsprechenden Dateien hinzufügen.

    Zitat Zitat von rniederer Beitrag anzeigen
    PS: Habe irgendwo gelesen, dass ZF auch JS- und CSS-Files komprimieren kann, aber das passiert zur Laufzeit und das will ich grundsätzlich nicht.
    Nein, kann das ZF in der Version 1, 2 und auch in der kommenden 3 nicht. Ist maximal ein Modul, View-Helfer oder ähnliches von einem Dritten – dies ist auch gut so.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Neuer Benutzer
    Registriert seit
    19.05.2010
    Beiträge
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Vielen Dank für deine Antwort.

    Klar, das könnte ich machen. Aber ich füge sehr viele JS- und CSS-Files in den einzelnen Actions hinzu. Die "Haupt"-Files wie z.B. "bootstrap.css" kann ich in der "Bootstrap"-Klasse abhandeln.

    Aber wie mache ich das mit den JS- und CSS-Files, welche ich in einer Action hinzufüge?

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von rniederer Beitrag anzeigen
    Aber ich füge sehr viele JS- und CSS-Files in den einzelnen Actions hinzu.
    Ganz einfach: weglassen und vorher jeweils zusammenführen.

    Dies hat mehrere Vorteile:
    • Du musst nur noch an einer Stelle in der Anwendung die CSS- und JS-Dateien hinzufügen. (Kontroller bleiben sauber!)
    • Tools wie Google „PageSpeed“ werden es belohnen.
    • Die Nutzer deiner Anwendung erhalten die Seite schneller ausgeliefert.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    Neuer Benutzer
    Registriert seit
    19.05.2010
    Beiträge
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ganz einfach: weglassen und vorher jeweils zusammenführen.
    Ok, das verstehe ich jetzt nicht ganz.

    Wie soll ich das machen? Ich habe folgende Files, die ich IMMER (in jeder Action) lade:
    - jquery.js /jquery.min.js
    - bootstrap.js / bootstrap.min.js
    - bootstrap.css / bootstrap.min.css

    Dann lade ich auf der Seite "/client/edit/" z.B. noch folgende Files:
    - client/edit.js / client/edit.min.js
    - comment/form.js / comment/form.min.js

    Das File "comment/form.js" dient dazu, den Code strukturiert aufzusplitten und dass die einzelnen Files nicht zu gross werden.

    Und auf der Seite "/client/search/" lade ich noch folgende Files:
    - client/search.js /client/search.min.js

    Wie soll ich die Files vorher schon zusammenführen? Ich habe auf jeder Action andere Files, die geladen werden.

  6. #6
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von rniederer Beitrag anzeigen
    Wie soll ich die Files vorher schon zusammenführen? Ich habe auf jeder Action andere Files, die geladen werden.
    Den gesamten JavaScript-Code in eine Datei setzen und diese dann laden. Das Gleiche für CSS. (Kannst du in deiner IDE bestimmt einrichten.)
    Mit HTTP in der Version 1 musst du die Anzahl der Anfragen an den Webserver so klein wie möglich halten.


    Für das Debugging kann es einfacher sein, den Code nicht noch extra zu minimieren – zusammenzustauchen. Daher ist es durchaus sinnvoll für die Entwicklung eine „foo.js“ statt einer „foo.min.js“ zu verwenden. Für den Live-Betrieb sollte wieder minimiert werden.

    Im Live-Betrieb dann noch zusätzlich den Webserver anweisen, dass komprimiert ausgeliefert wird (Gzip/Deflate) und wie lange die Datei gültig ist, bevor diese neugeladen werden muss (Expires).
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  7. #7
    Neuer Benutzer
    Registriert seit
    19.05.2010
    Beiträge
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Den gesamten JavaScript-Code in eine Datei setzen und diese dann laden. Das Gleiche für CSS. (Kannst du in deiner IDE bestimmt einrichten.)
    Das ist aber nicht optimal, sorry. Dann lade ich den JS-Code von mehreren Dutzend Seiten. Ein riesiger Overhead! Zur Erklärung. Ich möchte ein Admin-Tool entwickeln - Kundenverwaltung, Ticketing, etc.

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Mit HTTP in der Version 1 musst du die Anzahl der Anfragen an den Webserver so klein wie möglich halten.
    Ja, das ist mir bewusst. Kann durchaus schneller sein, wenn etwas mehr Bytes geladen werden müssen, dafür ein Request weniger. Aber wie gesagt, möchte ich nicht alle JS- und CSS-Files bei jedem Request laden. Denn dann könnte ich gleich eine Angular-Applikation schreiben.

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Für das Debugging kann es einfacher sein, den Code nicht noch extra zu minimieren – zusammenzustauchen. Daher ist es durchaus sinnvoll für die Entwicklung eine „foo.js“ statt einer „foo.min.js“ zu verwenden. Für den Live-Betrieb sollte wieder minimiert werden.

    Das ist auch mein Ziel.

  8. #8
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von rniederer Beitrag anzeigen
    Aber wie gesagt, möchte ich nicht alle JS- und CSS-Files bei jedem Request laden.
    Bitte bedenke: Dies wird nur einmal geladen! Bei alle weiteren Seitenaufrufen muss nur noch das HTML übertragen werden, der Rest ist bereits beim Client vorhanden.
    Geändert von Kaiuwe (12.08.2015 um 20:57 Uhr)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  9. #9
    Neuer Benutzer
    Registriert seit
    19.05.2010
    Beiträge
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von Kaiuwe Beitrag anzeigen
    Bitte bedenke: Dies wird nur einmal geladen! Bei alle weiteren Seitenaufrufen muss nur noch das HTML übertragen werden, der Rest ist bereits beim Client vorhanden.
    Mmmhhh. Jetzt machst du mich gleich ein wenig nachdenklich :-)

    Müsste mal schauen, wie gross die Datei bei einem anderen Projekt würde und was ich alles beim Hoster konfigurieren kann (gzip). Wäre wirklich eine Option.

    Aber zu meiner Frage. Gäbe es trotzdem eine Möglichkeit? Irgendwie ein Helper, dem man den Pfad übergeben kann und der prüft, ob es sich um die DEV oder PROD Umgebung handelt und anschliessend das ".min" hinzufügt?

  10. #10
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von rniederer Beitrag anzeigen
    Mmmhhh. Jetzt machst du mich gleich ein wenig nachdenklich :-)
    Sehr gut!

    Zitat Zitat von rniederer Beitrag anzeigen
    Müsste mal schauen, wie gross die Datei bei einem anderen Projekt würde und was ich alles beim Hoster konfigurieren kann (gzip). Wäre wirklich eine Option.
    Mach das mal. Denn auch jQuery kommt nur so auf die angegebenen 32kb:

    Lightweight Footprint – Only 32kB minified and gzipped.
    Zitat Zitat von rniederer Beitrag anzeigen
    Irgendwie ein Helper, dem man den Pfad übergeben kann und der prüft, ob es sich um die DEV oder PROD Umgebung handelt und anschliessend das ".min" hinzufügt?
    Müsstest dir einen eigenen View-Helfer schreiben. Im Kontroller selbst, kommst du an die „Umgebung“ per:
    PHP-Code:
    $bootstrap $this->getInvokeArg('bootstrap');
    $environment $bootstrap->getEnvironment(); 
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  11. #11
    Neuer Benutzer
    Registriert seit
    19.05.2010
    Beiträge
    15
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Besten Dank für deine Hilfe.

    Falls ich wieder etwas brauche, melde ich mich wieder.

  12. #12
    Benutzer
    Registriert seit
    22.06.2008
    Beiträge
    84
    Thanks
    1
    Thanked 6 Times in 6 Posts

    Standard

    Sorry, wenn ich mich an die Diskussion so ranhänge, aber das Thema interessiert mich auch.

    Ich würde gerne das Minimieren von JavaScript und CSS automatisiert in einem Build-Skript erledigen (so das ich es nur ein Mal machen muss und kein separates Modul im Live-Betrieb benötige).

    Ist sowas möglich? Wenn ja, wie?


    Gruß,
    Marco

  13. #13
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von st0ffel Beitrag anzeigen
    Ist sowas möglich? Wenn ja, wie?
    Es gibt viele Möglichkeiten, aber vom ZF würde ich dabei abraten, denn es ist nicht dessen Aufgabe.

    Du kannst deine Entwicklungsumgebung dazu nutzen: (mal am Beispiel von PHPStorm)



    Oder andere externe Tools:



    Oder eine Versionverwaltungssoftware wie Git mit Hooks.

    (Es gibt noch viel mehr!)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  14. #14
    Benutzer
    Registriert seit
    22.06.2008
    Beiträge
    84
    Thanks
    1
    Thanked 6 Times in 6 Posts

    Standard

    Es gibt viele Möglichkeiten, aber vom ZF würde ich dabei abraten, denn es ist nicht dessen Aufgabe.
    Ich weiß ;-) - habe mich da wohl falsch ausgedrückt.

    Worauf ich hinaus will: wie kann ich die Abhängigkeiten (bzw. die Reihenfolge) der Skript untereinander beibehalten?

    Wenn beispielsweise x.js von z.js abhängt und ich Dateien einfach im Dateisystem aneinanderhänge und dann minimiere,
    dann bekomme ich möglicherweise einen Fehler, weil auf Code zugegriffen wird, der noch gar nicht da ist. Im Framework
    könnte ich das ja beispielsweise append-/prependFile abbilden. Das Buildsystem müsste das dann auch berücksichtigen.

    Oder verwende ich für sowas lieber require.js (oder ähnliches). Bei kleinen Sachen scheint mir das ein ziemlicher Overkill
    zu sein.

    Noch eine Frage: Angenommen ich habe mein minimiertes JavaScript irgendwo im Dateisystem liegen. Was wäre der beste
    Weg, um die Datei mit Cache-Breaker (z.B. einen Counter, die Build-Nummer oder den Hash des letzten Git-Commits)
    in den Code zu bekommen?

    Wäre nett, wenn jemand da seine Erfahrungen schildern könnte. Danke!

    Marco

  15. #15
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.513
    Thanks
    4
    Thanked 353 Times in 284 Posts

    Standard

    Zitat Zitat von st0ffel Beitrag anzeigen
    wie kann ich die Abhängigkeiten (bzw. die Reihenfolge) der Skript untereinander beibehalten?
    Das wird im Hook von Git, in Phing, Koala oder Co. einfach festgelegt.

    Zitat Zitat von st0ffel Beitrag anzeigen
    Was wäre der beste Weg, um die Datei mit Cache-Breaker (z.B. einen Counter, die Build-Nummer oder den Hash des letzten Git-Commits) in den Code zu bekommen?
    In den Code? Wird wohl nicht viel helfen, denn von der Änderung bemerkt der Browser nichts. Es könnte das Hinzufügen eines Query-Strings helfen, der sich aus dem Änderungsdatum der CSS- bzw. JS-Datei ergibt. (View-Helfer?!)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •