IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Assetic asset version sans point d'interrogation


Sujet :

Symfony PHP

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut Assetic asset version sans point d'interrogation
    Bonjour,

    La gestion du cache est toujours un cauchemar. Les utilisateurs détestent devoir vider leur cache, et symfony propose des solution pour résoudre le problème.
    En particulier avec assetic, on peut utiliser asset_version qui ajoute au fichier en prod "main.js?v1" si vous êtes en version 1.
    Je trouve le principe génial, sauf que le fait de mettre un ? bloque toute mise en cache, autant dire que ça me fait perdre 95% de l'avantage.

    Est-il possible de générer des noms comme ceci :
    main_v1.js

    Ca permettrait lors des mises a jour de faire des requêtes sur des nouvelles url, donc de ne pas utiliser le cache, mais malgré tout de bénéficier de ce cache entre chaque version.

    Avez-vous trouver un moyen de le faire ?

    Merci,
    Pierre

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour

    sauf que le fait de mettre un ? bloque toute mise en cache
    Comment vois tu cela?

    Je teste sur chrome, j'affiche la console (F12), onglet "Network", je décoche "disable cache" et j'appelle une page.
    la requete est bien en cache (indiqué dans la colonne "size")

    Sinon pour ta question as tu testé ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {% javascripts '@AppBundle/Resources/public/js/*' output='js/compiled/'~mon_parametre_global_twig~'.js' %}
        <script src="{{ asset_url }}"></script>
    {% endjavascripts %}

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Bonjour,

    Dans ta console network, l'objectif est d'avoir 200 (cache) et non 304.(304 ca veut dire que tu vérifie la dernière version sur le serveur, mais que tu ne telecharge pas du coup)
    En fait, ca a l'air de fonctionner plus ou moins, je travaille encore dessus.

    Pas bete pour le parametre global twig... ca doit pouvoir fonctionner.
    J'essaye ca tout de suite.

    EDIT : Ca ne fonctionne pas. La raison, on est pas dans twig en fait quand on exécute ca, donc les variables globales ne sont pas chargées(on est dans la console)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Si met l'url de ta feuille de style dans chrome, le code sera effectivement 304 (appel au serveur).

    Si tu charge une page faisant elle-même appel à cette feuille de style, la console t'indique l'ensemble des requetes exécuté:
    la même css est alors en code 200/in cache

    ----

    On peut passer des variables à assetic, mais c'est effectivement différent des globales twig.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //app/config/config.yml
    assetic:
        variables:
            locale: [en,fr,de]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //app/Ressources/views/layout.html.twig
    {% javascripts output='js/compiled/script-{locale}.js' vars=['locale']
                        'js/moment/moment.js'   
                        'js/moment/locale/{locale}.js'   
                        'js/mon_script.js'
                %}            
                <script src="{{ asset_url }}"></script>
    {% endjavascripts %}
    -> genere 3 fichier nommé script-fr.js, script-en.js, script-de.js

  5. #5
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    c'est bizarre, ca fonctionne a moitié.
    j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    assetic:
        variables:
            version: [%version%]
    et dans mon layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            {% javascripts
    			'js/jquery-1.8.3.js'
    			'js/jquery-ui.js'
    			'js/jquery-ui-timepicker-addon.js'
    			'js/jquery.form.js'
    			'js/jquery.jeditable.js'
    			'js/jquery.tokeninput.js'
    			'js/jquery.validate.js'
    			'js/additional-methods.js'
    			'js/jquery.tooltip.js'
    			output='js/compiled/main_{version}.js' vars=['version']
    			%}
    En console, ca fonctionne, je peux générer mes fichiers en dev qui vont avoir le nouveau nom de fichier.
    En revanche dans le site web, je me paye des exception twig.

    ContextErrorException: Warning: implode(): Invalid arguments passed in C:\My Program Files\xampp\htdocs\dolphin\app\cache\dev\twig\f6\79\05925f689c9476c83eb893c450e07ddc4b80fea7b6ca2a885752d735746b.php line 320
    Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("") in ::base.html.twig at line 104.
    pourtant, ca devrait fonctionner normalement. Je pense faire la même chose que toi.

    Pierre

  6. #6
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    J'ai lu une explication.
    En gros, il y a un bug et seules env et locale sont définie par symfony.

    Ca doit être bon dans les nouvelles versions de symfony / assetic, mais je ne peux pas mettre a jour tout de suite. (ca fait tout planter dans mes autres dépendances)

    Je réessayerai quand je pourrais mettre a jour.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    framework:
        templating:
            engines: ['twig']
            assets_version: 1.0.3 # ou via parameter %release_version%
            assets_version_format: "v%%2$s/%%1$s"
    Ca devrait te donner les fichier twig sous la forme v1/main.js sans toucher les outputs
    Note: je n'ai pas encore testé moi même, tiens moi au courant de tes avancées sur le sujet ça m’intéresse fortement

  8. #8
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    En fait, j'ai testé cette version, sauf que du coup il me met les fichiers dans le mauvais dossiers et ne les retrouvent pas.

    Ca n'a pas l'air super compatible avec asset:dump --watch en tout cas...

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    et du coup assets_version_format: "%%2$s_%%1$s" ca devrait pas changer le dossier non?

  10. #10
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    De ce que je teste asset_version_format n'est utilisé que par twig lors de la génération de la page, mais pas par assetic pour la generation des fichier javascript.

    J'ai tout en 404 du coup.

    Pierre

Discussions similaires

  1. Appli Access passe en débogage sans point d'arrêt
    Par lordkoko dans le forum Access
    Réponses: 4
    Dernier message: 16/05/2015, 11h00
  2. Affectation contenant un point d'interrogation
    Par mambo dans le forum Visual C++
    Réponses: 3
    Dernier message: 05/09/2006, 10h26
  3. Wifi sans point d'accès
    Par Admin dans le forum Hardware
    Réponses: 8
    Dernier message: 27/11/2005, 11h15
  4. Des points d'interrogation dans le retour js
    Par franculo_caoulene dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/11/2005, 16h25
  5. cmt connecter 2 pc en reseaux sans fil sans point d'acces?
    Par angelz dans le forum Développement
    Réponses: 2
    Dernier message: 11/05/2004, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo