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

Bibliothèques et frameworks PHP Discussion :

[Smarty] Optimisation, combinaison des requêtes JavaScript et CSS


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut [Smarty] Optimisation, combinaison des requêtes JavaScript et CSS
    Salut à tous,

    Je savais pas trop où poster, ma question recoupe pas mal de sujet.

    Donc je travaille sur un framework d'entreprise, et je cherche à l'optimiser. Une des solutions et de combiner les fichiers js et css :

    Think Vitamin, Serving JavaScript Fast

    combine

    Je m'inspire de ces solutions pour coder quelque chose de tout à fait adapté à notre framework.

    J'utilise SMARTY, voici le code dans le tpl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {insert_js files="support-swfobject,support-jquery,support-jqueryPlugins-superfish,kinkama"}
    Voici la fonction SMARTY :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    function smarty_function_insert_js($params, &$smarty)
    {
    	/**
    	 * Verification que le tableau d'argument $files n'est pas vide
    	 */
    	if ( empty( $params['files']) ){
    		$smarty->_trigger_fatal_error("[smarty_function_insert_js] param 'files' cannot be empty.");
    		return;
    	}
     
    	/**
    	 * Tableau contenant les différents scripts à inclure
    	 * @var array $files
    	 */
    	$files = array();
     
    	/**
    	 * Construction dynamique du nom du fichier
    	 * @var string $combinedName
    	 */
    	$combinedName = str_replace(',', '_', $params['files'] );
    	$combinedName = $combinedName.'.js';
     
    	/**
    	 * Construction des chemins vers les js
    	 */
    	foreach( explode(',', $params['files']) as $key => $file )
    	{
    		$file = str_replace('-', '/', $file);
    		$file = 'Views/js/'.$file.".js";
    		$files[$key] = 	$file ;
    	}
     
    	/**
    	 * Si le fichier existe, on l'inclut dans le template
    	 */
    	if( file_exists(WEBROOT."Views/combinedFiles/".$combinedName) )
    	{
    		return "<script type='text/javascript' src='Views/combinedFiles/$combinedName'></script>";
    	}
    	else
    	{
    		$handle = fopen( WEBROOT."Views/combinedFiles/".$combinedName, 'x+' );
    		foreach($files as $file)
    		{
    			$temp = file_get_contents(WEBROOT.$file);
    			fwrite($handle, $temp);
    			$sep = "\n\n\n/****************  $file ****************\n\n\n";
    			fwrite($handle, $sep);
    		}
    		fclose($handle);
    		return "<script type='text/javascript' src='Views/combinedFiles/$combinedName'></script>";
    	}
    }
    Tout semble bien fonctionner, j'ai bien un fichier dans le dossier combinedFiles

    Ce fichier est bien télécharger, on le voit dans firebug.

    Simplement on dirait que le javascript n'est pas évalué. J'ai des erreurs js, il ne reconnait pas le $ pour jQuery, idem avec le swfobject, et notre librairie kinkama.js

    Es ce que ce n'est pas un probleme d'ordre dans la construction de la page ?

    Faut il que je fasse un eval ? Si oui où et comment ?

    L'article de ThinkVitamin recommande se que j'ai fait, chez eux ça semble marcher pourtant ...

    Si qq1 a une idée ...

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    le support-jquery ne devrait-il pas être chargé avant le support-swfobject car ce dernier utilise p-e des fonctions jQuery no ?

    PS : Pour voir les JS/CSS chargés dans une page je te conseille le plugin JSView pour Firefox, sinon un simple déploiement de la balise SCRIPT dans Firebug te dira vite fait si c'est chargé ou pas

  3. #3
    Membre régulier Avatar de Sylvain__A_
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2008
    Messages : 100
    Points : 94
    Points
    94
    Par défaut
    Comme souvent, c'était une petite erreur con.

    Regardez, dans boucle foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach($files as $file)
    {
    	$temp = file_get_contents(WEBROOT.$file);
    	fwrite($handle, $temp);
    	$sep = "\n\n\n/****************  $file ****************\n\n\n";
    	fwrite($handle, $sep);
    }
    La ligne $sep. J'ouvre un commentaire que je ne ferme jamais ...

    Voilà. Une solution de combinaison et minimisation du nbre de requêtes http :
    Construire 2 petites fonctions SMARTY qui vont combiner vos js et css ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/01/2006, 10h35
  2. liens sur l'optimisation des requêtes
    Par tung-savate dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/10/2005, 21h02
  3. optimisation des requêtes
    Par user_h dans le forum Oracle
    Réponses: 4
    Dernier message: 17/10/2005, 12h50
  4. Optimiser les jointures dans des requêtes
    Par klereth dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 23/04/2005, 17h29
  5. optimisation des requêtes
    Par yech dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/09/2004, 19h03

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