Par défaut, mes scripts ne sont pas indentés lorsqu'ils sont téléchargés depuis le site. Cependant, je prévois d'ajouter une option permettant aux utilisateurs de télécharger les scripts originaux avec une indentation, afin de leur laisser le choix d'opter pour un code plus facile à lire. Néanmoins, le code sera toujours minifié par défaut.
La minification est un processus visant à réduire le poids d'un fichier en éliminant les éléments non essentiels pour son bon fonctionnement. Cela permet d'augmenter les performances et d'optimiser le référencement, notamment dans le contexte du web. Bien que la beauté du code puisse prendre de la place, il est important de considérer que son rôle principal est de fournir un service fonctionnel.
La décision de ne pas minifier le code peut être justifiée lorsque plusieurs personnes travaillent sur le projet, car cela facilite la lisibilité et favorise une meilleure organisation au sein de l'équipe.
Il est essentiel de noter que le processus de conversion en minification se produit uniquement au moment du téléchargement. Cette approche n'a jamais affecté la maintenabilité du code source, malgré les nombreuses mises à jour publiées chaque semaine.
À titre d'exemple, le poids de mon gamemode finalisé est plus optimisé que celui d'un simple addon lambda grâce à la minification complète du code source. Malgré son caractère complet, il contient également un système d'administration intégré et 540 objets différents, tous utiles, sans avoir besoin d'ajouter d'addons supplémentaires. Cela se traduit par des temps de chargement rapides, même en présence de 300 NPCs surchargés sur la carte, de milliers de véhicules conduisibles et d'objets présents (bien que je recommande généralement de limiter ces éléments pour des raisons d'optimisation).
Dans le contexte du web, un code non minifié peut être perçu comme un code inachevé ou non optimisé. Il est donc préférable de procéder à une minification appropriée pour obtenir un code efficace et performant.
Les serveurs Gmod souffrent beaucoup des chargements lorsqu'il y a beaucoup de scripts et beaucoup d'addons, les utilisateurs mettent beaucoup de temps pour rejoindre un serveur et parfois se découragent avant la fin du chargement. Réduire ce temps pourrait permettre d'éviter qu'ils quittent avant la fin du chargement, cette méthode appliqué à tous vos scripts n'est pas à négliger.
En programmation, la minification signifie réduire la taille du code pour réduire la taille d'un programme à télécharger depuis un serveur et ainsi réduire l'encombrement du réseau, sur Gmod la taille d'un fichier Lua coté client s'il est minifié sera plus rapide à télécharger. Cela fait partie des nombreuses règles d'optimisations existantes.
Pour cela on supprime tous les commentaires inutiles et les caractères. Ces suppressions ne gêneront aucunement le bon fonctionnement de l'application. Le module de téléchargement remplacera aussi le nom des variables internes local à l'application pour les réduire à un seul ou deux caractères de façon automatisé. Il est aussi possible d'utiliser certaines écritures compactes propres aux langages (couleur en hexadécimal, raccourcis...)
Ce processus est très utilisé en programmation web et surtout très recommandé.
2. Exemple de code minifié
Exemple 1: Code non minifié
Code non minifié
local function my_supermegahyper_test ( Player , Argument , NUMBER )
local firstnumber = NUMBER[1] ;
return firstnumber * 2;
end
concommand.Add( "give_me_double" , my_supermegahyper_test )
Exemple 2: Code minifié
Code minifié
local function test(a,b,c)return c[1]*2 end
concommand.Add("give_dbl",test)
3. Questions fréquente
Question : Qu'est ce que la minification? Réponse : La minification est une optimisation de la taille de fichier en supprimant les caractères inutiles sans impact sur le bon fonctionnement du script. Suppression également des espaces inutiles et de l'indentation.
Question : Qu'est ce que l'indentation? Réponse : L'indentation consiste à ajouter une ou plusieurs tabulations au début de certaines lignes d'un programme afin de le rendre plus lisible.
Question : Est ce que retirer l'indentation change quelque chose au fonctionnement? Réponse : Et bien, non.
Question : Est ce que retirer l'indentation pose problème au niveau de la maintenance? Réponse : Non, ceux qui ont expérimenté mon support apprécie toujours ma réactivité. Mon code source de mon coté pour travailler n'est pas la version minifié. Et au pire quand il y a une erreur à la ligne 2 du fichier init.lua. Et bien faut s'attendre à ce qu'il n'y ai pas besoin de chercher plus.
Question : D'où vient la minification? Réponse : La minification est une forme d'optimisation en web recommandé par Google pour réduire les temps de chargement des sites au maximum et au strict nécessaire pour fonctionner.
Question : Tu parles de faire télécharger des fichiers moins lourd mais il y a des variables qui existent dans tes addons qui semble ne pas être utilisé dans le code, pourquoi? Réponse : Cela pouvait être le cas avec les scripts de 2015 à 2017 quand j'étais sur Gmodstore. Beaucoup répandu par le leak de mes scripts. Aujourd'hui si une variable vous semble inutile c'est que vous faite erreur de considérer qu'ils ne peuvent pas fonctionner en combinaison avec d'autres de mes produits qui eux auront besoin de ses variables pour bien fonctionner.
Question : Pourquoi avoir fait ce choix? Réponse : J'ai fait ce choix par défaut pour réduire la taille des fichiers. Des fichiers plus petits prennent moins de place dans le cache généralement stocké dans la mémoire, et téléchargé par le client à sa connexion, donc un choix qui impacte le temps de chargement pour les fichiers Lua car moins de fichiers Lua volumineux à télécharger pour vos utilisateurs, choix que j'applique aussi ici sur ce site et qui paye en performances. On sait tous qu'un utilisateur quittera plus facilement une page si son temps de chargement est trop long. Testez ce site sur Google speed par exemple en comparaison avec un autre site (sans viser personne) qui est une référence pour vous, vous comprendrez de quoi je parle.
4. Comment réduire le temps de chargement des utilisateurs quand ils rejoignent un serveur Gmod
Comment réduire le temps de chargement de mes utilisateurs sur mon serveur Gmod / DarkRP ou autre gamemode?
- Réduire le nombre d'addons workshop au strict nécessaire à votre projet, ne faite pas télécharger du contenu superflue et inutile, le plus long du temps de chargement il est là, les addons workshop.
- Installez des scripts téléchargé depuis des sources proposant une version minifié! Ici on réduira la taille des fichiers Lua téléchargé.
- Ne surchargez pas vos maps d'entités mal optimisées.
La minification n'est pas la méthode ultime et micracle pour optimiser votre serveur si vous tournez avec 200 addons workshop, c'est seulement qu'une étape.
Appliquer la minification sur tout un programme donne un résultat qui n'est pas négligeable surtout si celui ci est téléchargé lors de la connexion de chaque utilisateur.
Cette méthode est utilisé pour réduire le temps de téléchargements dans beaucoup de langages.