Chargement Javascript via PHP
À partir d'un tutoriel que j'ai lu sur Sitepoint, j'ai appris que je pouvais charger des fichiers JS par le biais de PHP (c'était un commentaire, de toute façon). Le code est sous cette forme:
<script src="js.php?script1=jquery.js&scipt2=main.js" />
Le but de l'utilisation de PHP a été de réduire le nombre de requêtes HTTP pour les fichiers JS. Mais à partir de la majoration ci-dessus, il me semble qu'il y a toujours le même nombre de demandes comme si j'avais écrit deux tags pour les fichiers JS (je peux me tromper, c'est pourquoi je pose la question).
La question est de savoir quel est le code PHP censé être écrit et ce qui est/sont à l'avantage(s) de cette approche au cours de la "normale" méthode?
source d'informationauteur afaolek | 2011-06-06
Vous devez vous connecter pour publier un commentaire.
L'affiche originale est sans doute ce qui signifie que
Causera moins de requêtes http que
C'est parce que js.php va lire tous les noms de scripts à partir des paramètres GET et ensuite l'imprimer dans un fichier unique. Cela signifie qu'il n'y a qu'un aller-retour vers le serveur pour obtenir tous les scripts.
js.php serait probablement être mis en œuvre comme ceci:
Noter que cela peut ne pas être une solution optimale si il y a un faible nombre de scripts qui est nécessaire. Le principal problème est que le navigateur web ne prend pas en charge une infinité de nombre de scripts en parallèle à partir d'un même domaine.
Vous aurez besoin de mettre en œuvre la mise en cache pour éviter de charger et de la concaténation de tous vos scripts à chaque requête. Le chargement et le regroupement de tous les scripts sur chaque demande de manger beaucoup de CPU.
De l'OMI, la meilleure façon de le faire est de combiner et de rapetisser tous les fichiers de script en avant le déploiement de votre site web, puis de faire référence à ce fichier. De cette façon, le client a juste fait un aller-retour vers le serveur, et le serveur n'a pas de charge supplémentaire sur chaque demande.
Veuillez noter que le PHP solution fournie est pas une bonne approche, c'est juste une simple démonstration de la procédure.
Le principal avantage de cette approche est qu'il n'existe qu'une seule demande entre le navigateur et le serveur.
Une fois que le serveur reçoit la demande, le script PHP combine les fichiers javascript et crache les résultats.
La construction d'un script PHP qui combine tout simplement fichiers JS n'est pas du tout difficile. Il suffit simplement d'inclure les fichiers JS et envoyer le contenu-type d'en-tête.
Quand il devient plus difficile est basé sur si oui ou non vous voulez à vous soucier de la mise en cache.
Je vous recommande de vérifier minify.
C'est:
script[]=
ferait PHP traiter comme un tableau, vous pouvez passer en boucle)<script></script>
jamais<script />
)Vous avez tort. Le navigateur fait une requête unique. Le serveur apporte une réponse unique. Il vient de fouilles dans plusieurs fichiers à la construire.
Les étapes sont énumérées dans cette réponse
Vous obtenez un seul de demande et de réponse, de manière à éviter la surcharge de faire plusieurs requêtes HTTP.
Vous perdez les avantages de la sane-têtes que les serveurs pour envoyer des fichiers statiques, de sorte que vous avez à mettre en place des en-têtes dans votre script.
Vous pouvez le faire comme ceci:
Le concept est assez facile, mais vous pouvez la rendre un peu plus avancé
Étape 1: de fusionner le fichier
utilisation:
Étape 2: la mise en cache
Cela rend un peu plus avancé. Veuillez noter que ceci est semi-pseudo code pour expliquer les concepts. Dans la pratique, vous aurez besoin de faire plus de vérification d'erreur et vous devez faire de l'invalidation du cache.
Pour ce faire est plus réussi et de manière automatisée, il n'y a assetic (si vous pouvez utiliser php 5.3):
https://github.com/kriswallsmith/assetic
(Qui a plus ou moins fait cela, mais beaucoup mieux)
Assetic
La Documentation
https://github.com/kriswallsmith/assetic/blob/master/README.md
Le flux de travail va être quelque chose le long des lignes de cette:
Il y a beaucoup de support pour de nombreux formats:
Expliquant tout est un peu en dehors de la portée de cette question. Mais n'hésitez pas à ouvrir une nouvelle question!
PHP va simplement concaténer les deux fichiers de script et envoie seulement 1 script avec le contenu des deux fichiers, donc vous aurez seulement 1 demande vers le serveur.
À l'aide de cette méthode, il y aura toujours le même nombre de demandes d'e /s de disque comme si vous n'aviez pas utilisé la méthode PHP. Toutefois, dans le cas d'une application web, d'e /s disque sur le serveur n'est jamais le col de la bouteille, le réseau est. Ce que cela vous permet de réduire les frais généraux associés à la demande le fichier à partir du serveur sur le réseau via le protocole HTTP. (Réduire le nombre de messages envoyés sur le réseau.) Le script PHP sorties de la concaténation de tous les fichiers requis de sorte que vous obtenez tous vos scripts dans une requête HTTP de l'opération plutôt que plusieurs.
En regardant les paramètres, c'est de passer à js.php il peut charger deux fichiers javascript (ou n'importe quel nombre d'ailleurs) dans une requête. Il suffit de regarder ses paramètres (script1, script2, scriptN) et de les charger en une seule fois plutôt que de les charger une par une avec les script de la directive.
Le fichier PHP peut aussi faire d'autres choses comme la minimisation avant de sortir. Bien que ce n'est probablement pas une bonne idée de réduire toutes les demande à la volée.
La façon dont le code PHP serait écrite est, il regarde les paramètres de script et il suffit de charger les fichiers d'un répertoire donné. Cependant, il est important de noter que vous devez vérifier le type de fichier et ou l'emplacement avant de le charger. Vous ne voulez pas permettre à un peuple d'une backdoor où il peut lire tous les fichiers sur votre serveur.