Hello à tous,

j'aime le partage. Smiley smile

alors, ici l'idée de mon code (je suis certain que le concept existe déjà mais dans le doute de savoir si l'on en parle sur ce site, je vous fais part de mon code), je disais donc, l'idée est pour les gens comme moi qui ont la flemme d'installer un simulateur php sur le pc, mais qui d'un autre coté aime développer des pages css ou javascript séparées de leur(s) page(s) principale(s). (pour pouvoir utiliser le même CSS/JS sur plusieurs pages ou simplement pour s'y retrouver dans leurs unique page qui fait 2.000 lignes de codes). pour ces gens, donc, qui aiment séparer leurs code js ou css et qui veulent tester leurs fichiers en local. rien de tel que les simple ligne d'insertion, ex :
<script type="text/javascript" src="js/main.js"></script> 
<link href="css/defaut.css"   rel="stylesheet" type="text/css"  > 

sur une page HTML ..
mais le problème, c'est qu'une fois "en ligne", la plupart des navigateurs ne renouvellent pas assez souvent leurs caches... donc difficle de voir le rendu à jour s'en s'amuser à chaque fois à supprimer le cache, ou bien à paramètrer leurs navigateurs sans cache. (chiant pour les autres sites.) puis si on est plusieurs développeurs, pour montrer son chefs d'oeuvres aux collègues, ils doivent eux aussi supprimer leurs caches .. bref, quand on update 10 fois une page par jour, il est préférable de ne pas faire de fichiers séparés .. en fait SI mais de les inclure dans le code HTML en se servant par exemple d'un include en PHP, ex :
<script type="text/javascript" ><?php include("js/main.js"); ?></script>
<style type="text/css"><?php include("css/defaut.css"); ?></style>


bref, MA solution que je vous propose :
avoir UN seul code malléable sur votre page HTML pouvant être testé localement(sans PHP) avec les 3 fichiers séparés et sur le serveur sans se soucier de problèmes de cache.

sur le serveur créer un fichier PHP (ex: index.php ou ma_page.php) avec uniquement le code suivant :
<?php include("ma_page.html"); ?>


et sur votre page html, incluez les fichiers JS et CSS comme suit :
<head>

<!-- HACK JS by Bogs -->
<script type="text/javascript" > // <?php include("js/main.js"); ?></script>
<!-- <?php if (false){ ?>-->
<script type="text/javascript" src="js/main.js"></script> 
<!-- <?php } else echo "JS INCLUT EN PHP"; ?> -->



<!-- HACK CSS by Bogs -->
<style type="text/css"><?php include("css/defaut.css"); ?></style>
<!-- <?php if (false){ ?> -->
<link href="css/defaut.css"   rel="stylesheet" type="text/css"  > 
<!-- <?php } else echo "CSS INCLUT EN PHP"; ?> -->

</head>


vous pouvez maintenant tester votre "ma_page.html" localement ou l'uploader sur votre serveur et la tester en ligne. (en appelant le fichier PHP pour éviter les problèmes de cache)

je sens déjà les critiques venir, mais peu importe, moi j'aime mon idée. Smiley lol



nb: pour le JS vous aurez remarqué que l'include PHP est en commentaire pour ne pas bugger localement. Donc évitez de mettre du code dans votre première ligne de votre fichier JS.

EDIT: l'idée est pour la durée du développement bien entendu, une fois le développement terminé, il va de soit qu'il faut inclure les fichier avec les traditionnelles lignes de code HTML. (pour pas que le visiteurs les rechargent à chaque fois, une fois qu'elles sont stables et ne changent plus 10 fois par jour.)
Modifié par bogs (20 Sep 2010 - 01:50)
Modérateur
Salut bogs, Smiley smile

Pour éviter les problèmes de cache lors de tes développements, les navigateurs, en interne, proposent de le désactiver.

Par exemple, avec l'extension web developer au sein de Firefox, il faut cliquer sur "Désactiver > Désactiver le cache". Sur IE, tu appuies sur F12 et là encore, tu as une option te permettant de le désactiver, etc... etc...

Bref, il est effectivement inutile de passer par ces bouts de code.
Salut,

hem... pas convaincu du tout par ta technique. Smiley murf

Plutôt que de rajouter du code qu'il faudra ensuite supprimer il suffit de quelques lignes dans un fichier .htaccess à la racine :
<FilesMatch "\.(js|css)$">
 ExpiresDefault A0
 Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
 Header set Pragma "no-cache"
</FilesMatch>
De toute façon une fois finalisé il "faudra" bien gérer la mise en cache donc autant se servir d'Apache.

Edit: grillé (le temps de me faire un café Smiley lol ).

Edit2: quant à la phrase concernant "la flemme d'installer un émulateur php" je suppose que c'était pour rire ?
Modifié par Heyoan (20 Sep 2010 - 07:11)
koala64> l'année dernière j'avais un site(qui n'a jamais marché soyons honnête^^) avec qqes beta testeurs ... il est arrivé de mettre des fichiers à jours et que plus rien de fonctionnait ! même en appuyant sur F5 chez eux.. simplement car leurs JS n'était pas à jour. Une fois leurs caches supprimé tout refonctionnait normalement.

La solution d'apache d'Heyoan devrait effectivement réssoudre mon problème. (je n'ai aucune connaissance en HTACCESS )

Heyoan> Pour l'émulateur PHP, je bouge régulièrement de PC, entre les salles informatiques, mes grands-parents, mes parents, mes copines .. ^.^ ! Donc oui, parfois j'édite juste une ligne ou 2 et j'ai la flemme d'installer un émulateur php juste pour permettre un "include()" dans mes sources HTML, surtout qu'à certains endroits (salles info) l'installation de logiciel n'est pas tjs autorisée.



NB: m'en vais tester ce fameux htaccess. Smiley cligne
Modifié par bogs (20 Sep 2010 - 10:53)
@koala> mes beta testeurs, étaient des non-geek, j'allais pas leurs demander de faire des manip, ils venaient juste sur le site et donnaient leurs avis sur le wall prévu à cet effet. Smiley smile

tout ça pour ne pas admettre que j'ai tord (même si j'en suis bien conscient). Smiley langue


"on apprend de se erreurs"

*s’éclipse discrètement du thread*
Modérateur
Tu n'as pas forcément tort; se servir d'un bout de code peut être utile lorsque tu ne peux toucher à la configuration de ton navigateur, par exemple ou bien, effectivement, lorsque tu souhaites montrer le résultat à des personnes tierces sans avoir à leur préciser systématiquement de vider leur cache. Smiley cligne

C'est juste que, si tu fais tes tests en ligne, le fait de paramétrer ton navigateur permet de ne pas avoir le cache lors de tes développements alors que tes visiteurs, eux, en profiteront.

Aussi, il existe encore une autre méthode qui est de passer une query string variable :
<?php
    $time = isset($tests) && $tests == true ? '?time=' . time() : '';
?>
<script type="text/javascript" src="scripts.js<?php echo $time; ?>"></script>
<link rel="stylesheet" type="text/css" title="feuille de style principale" media="screen" href="styles.css<?php echo $time; ?>" />
ce qui force le navigateur à aller chercher le fichier sur le serveur.
Modifié par koala64 (20 Sep 2010 - 14:35)