Maison >développement back-end >Problème PHP >Comment modifier les performances d'un site Web PHP
Méthodes pour modifier les performances des sites Web PHP : 1. Statiquer le HTML ; 2. Séparer les serveurs d'images ; 3. Effectuer le clustering de bases de données et le hachage de tables ; 5. Créer des miroirs ; Optimiser l'écriture de code, etc.
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.
Comment modifier les performances d'un site Web php ?
Solution d'optimisation des performances des grands sites Web PHP et des accès simultanés
L'optimisation des performances des sites Web est très importante pour les grands sites Web. La vitesse d'accès d'un site Web affecte l'expérience utilisateur. facile à résoudre, mais pour les grands sites Web avec de nombreuses colonnes et de grandes images et images, comment optimiser les performances globales ?
1. Stratégies d'amélioration des performances pour les grands sites Web
1. HTML statique
En fait, tout le monde sait que la plus efficace et la moins consommée est la page html purement statique, nous faisons donc de notre mieux pour rendre les pages de notre site Web. site Web Utiliser des pages statiques pour y parvenir est la méthode la plus simple et c'est en fait la méthode la plus efficace.
2. Séparation des serveurs d'images
Comme nous le savons tous, pour les serveurs Web, qu'il s'agisse d'Apache, d'IIS ou d'autres conteneurs, les images consomment le plus de ressources, il nous est donc nécessaire de séparer les images des pages. à grande échelle La stratégie adoptée par tous les sites Web est qu'ils disposent tous de serveurs d'images indépendants, voire multiples. Une telle architecture peut réduire la pression sur le système serveur qui fournit les demandes d'accès aux pages et garantir que le système ne tombe pas en panne en raison de problèmes d'image. Sur le serveur d'applications et le serveur d'images, différentes optimisations de configuration peuvent être effectuées. Par exemple, lors de la configuration de ContentType, Apache peut prendre en charge le moins de LoadModules possible pour garantir une consommation système et une efficacité d'exécution plus élevées.
3. Cluster de bases de données, hachage de tables de bases de données
Les grands sites Web ont des applications complexes, et ces applications doivent utiliser des bases de données. Face à un grand nombre d'accès, le goulot d'étranglement de la base de données deviendra rapidement apparent. La base de données deviendra bientôt trop grande pour l'application, nous devons donc utiliser le clustering de bases de données ou le hachage de tables de bases de données.
En termes de clusters de bases de données, de nombreuses bases de données ont leurs propres solutions, et le maître/esclave couramment utilisé fourni par MySQL est une solution similaire.
Les clusters utilisent généralement la technologie d'équilibrage de charge CDN, GSBL et DNS. Chaque région dispose d'un ensemble de groupes de serveurs frontaux. Par exemple : NetEase et Baidu utilisent la technologie d'équilibrage de charge DNS. utilise la technologie DNS, tous les canaux partagent un cluster de serveurs frontaux.
Le hachage des tables de bibliothèque est une solution couramment utilisée et la plus efficace.
Nous installons des modules métiers et applicatifs ou fonctionnels dans l'application pour séparer la base de données. Différents modules correspondent à différentes bases de données ou tables, puis effectuons un hachage de base de données plus petit sur une certaine page ou fonction selon une certaine stratégie, comme le sont les tables utilisateur. haché en fonction des identifiants des utilisateurs, ce qui peut améliorer les performances du système à faible coût et avoir une bonne évolutivité.坛 Le forum de SOHU utilise une telle architecture pour séparer les informations des utilisateurs du forum, les paramètres, les publications et autres informations, puis utilise la section et l'ID pour créer une grande base de données et un tableau en accord avec la plaque et l'utilisateur. La configuration permet au système d'ajouter une base de données à faible coût à tout moment pour compléter les performances du système.
4. Mise en cache
Quiconque travaille dans le domaine de la technologie est tombé sur le mot cache, et le cache est utilisé dans de nombreux endroits. La mise en cache dans l’architecture et le développement de sites Web est également très importante. Ici, nous parlons d’abord des deux caches les plus basiques. La mise en cache avancée et distribuée est décrite plus loin. En termes de mise en cache architecturale, toute personne familiarisée avec Apache sait qu'Apache fournit son propre module de mise en cache et que vous pouvez également utiliser le module Squid supplémentaire pour la mise en cache. Ces deux méthodes peuvent améliorer efficacement les capacités de réponse d'accès d'Apache. Le cache 方面 sur le développement de programmes de sites Web. Le cache mémoire fourni sur LINUX est une interface de cache couramment utilisée. Vous pouvez l'utiliser dans le développement Web. Par exemple, cette structure est utilisée. De plus, lors de l'utilisation du développement de langages Web, chaque langage a essentiellement son propre module de cache et sa propre méthode. PHP a le module Cache de Pear, et Java en a encore plus. Je ne connais pas très bien .net, mais je pense qu'il doit être là.
5. Mirroring
La mise en miroir est une méthode souvent utilisée par les grands sites Web pour améliorer les performances et la sécurité des données. La technologie de mise en miroir peut résoudre les différences de vitesse d'accès des utilisateurs causées par les différents fournisseurs d'accès au réseau et les régions, par exemple entre ChinaNet et EduNet. Cette différence a incité de nombreux sites Web à créer des sites miroirs au sein du réseau éducatif, et les données sont mises à jour régulièrement ou en temps réel.
6. Équilibrage de charge
L'équilibrage de charge sera une solution haut de gamme pour les grands sites Web afin de résoudre les accès à charge élevée et un grand nombre de requêtes simultanées. La technologie d’équilibrage de charge est développée depuis de nombreuses années et il existe de nombreux fournisseurs de services et produits professionnels parmi lesquels choisir.
2. Optimisation de l'écriture du code PHP :
1. Echo est beaucoup plus rapide que l'impression.
Les deux méthodes imprimeront quelque chose sur la page, mais echo ne renvoie aucune valeur et print renverra 0 ou 1 en cas de succès ou d'échec.
2. include_once prend plus de temps que include.
Parce qu'il doit vérifier si la classe que vous souhaitez inclure a été incluse.
3. Assurez-vous d'utiliser des guillemets simples au lieu de guillemets doubles pour les longues chaînes de paragraphe.
Parce que les guillemets doubles rechercheront des variables dans la chaîne. Par exemple : echo 'Ceci est une longue chaîne'.$name est beaucoup plus rapide que echo 'Ceci est une longue chaîne $name'.
4. N'utilisez pas de boucles for imbriquées dans des boucles
5. Si la fonction peut être définie comme statique, ne la définissez pas comme fonction membre. Les fonctions statiques sont 33 % plus rapides que les fonctions membres.
6. Si vous pouvez résoudre le problème sans utiliser d’expressions régulières, n’utilisez pas d’expressions régulières.
Les expressions régulières sont plus lentes que les fonctions natives de PHP. Par exemple, utilisez str_replace au lieu de preg_replae.
7. Essayez de ne pas utiliser de chemins relatifs pour inclure des fichiers
Si vous recherchez un fichier dans un chemin relatif, vous le rechercherez dans le répertoire actuel, puis effectuerez une nouvelle recherche dans l'ordre. Cela rend la recherche de fichiers très lente. Il est préférable de définir d'abord une constante comme WEB_ROOT, puis d'utiliser cette constante pour inclure le fichier.
8. Le symbole de congruence === est plus rapide que l'égalité ==
et if (1 == '1′) retournera vrai, if (0 == ”) retournera également vrai, et lorsque vous utilisez la congruence Lors de l'utilisation de symboles, if(1 ==='1′) et if(0===”) renverront false. Il est donc préférable d'utiliser le symbole de congruence lorsque vous devez détecter certaines variables booléennes dans votre programme.
3. Il existe les méthodes suivantes pour thinkphp
1. Désactivez le mode de débogage
Puisqu'après avoir désactivé le mode de débogage, le système générera automatiquement le cache de compilation du projet et désactivera l'écriture du journal, ce qui peut réduire considérablement Chargement des E/S et journaux Frais généraux d’écriture.
2. Activer la sortie de compression de page
À partir de la version 3.1, le paramètre de configuration OUTPUT_ENCODE a été ajouté pour contrôler la sortie de compression de page.
3. Activez la mise en cache
L'installation du cache APC ou Xcache dans l'environnement de déploiement du site Web peut améliorer efficacement les performances du site Web et l'utilisation de la mémoire. XCache est un cache/optimiseur d'opcode open source, ce qui signifie qu'il peut améliorer les performances de PHP sur votre serveur. Il évite les processus de compilation répétés en mettant en mémoire tampon les données PHP compilées dans la mémoire partagée et peut utiliser directement le code compilé mis en mémoire tampon pour augmenter la vitesse. Il peut généralement augmenter le taux de génération de vos pages de 2 à 5 fois et réduire la charge du serveur. APC) est un outil de cache open source pour PHP qui peut mettre en cache le code intermédiaire php de l'opcode.
4. Cache de champ
Par défaut, le cache de champ est généré automatiquement une fois le développement terminé, les modifications apportées à la base de données deviennent moindres, vous pouvez donc envisager de fusionner le cache de champ dans la classe de modèle correspondante, ce qui peut réduire le coût de chaque surcharge d'E/S liée à la lecture du cache de champ. La méthode de fusion consiste à trouver le fichier de cache de champ correspondant sous Runtime/Data/_fields
4. Optimisation de la base de données
1 Choisissez le bon moteur de stockage
En prenant MySQL comme exemple, il existe deux moteurs de stockage MyISAM et. InnoDB, chaque moteur a des avantages et des inconvénients. MyISAM convient aux applications nécessitant un grand nombre de requêtes. La tendance d'InnoDB sera un moteur de stockage très complexe, et pour certaines petites applications, il sera plus lent que MyISAM. Mais il prend en charge les « verrouillages de lignes » et les transactions.
2. Optimiser le type de données du champ
Rappelez-vous un principe, plus la colonne est petite, plus elle sera rapide. Pour la plupart des moteurs de bases de données, les opérations sur le disque dur constituent probablement le goulot d'étranglement le plus important. Ainsi, rendre vos données compactes peut être très utile dans cette situation car cela réduit l’accès au disque dur. Si une table ne comporte que quelques colonnes (comme une table de dictionnaire, une table de configuration), alors nous n'avons aucune raison d'utiliser INT comme clé primaire. Il sera plus économique d'utiliser MEDIUMINT, SMALLINT ou un TINYINT plus petit. Si vous n'avez pas besoin d'enregistrer l'heure, il est préférable d'utiliser DATE plutôt que DATETIME. Bien entendu, vous devez également laisser suffisamment de place à l’expansion. Troisièmement, l'ajout d'index aux champs de recherche
n'est pas nécessairement la clé principale ou le champ unique. S'il y a un champ dans votre table que vous utiliserez toujours pour la recherche, il est préférable de l'indexer. À moins que le champ que vous souhaitez rechercher soit un champ de texte volumineux, vous devez alors créer un index de texte intégral.
🎜4. Évitez d'utiliser Select *. Plus les données sont lues dans la base de données, plus la requête deviendra lente. 🎜Et, si votre serveur de base de données et votre serveur WEB sont deux serveurs indépendants, cela augmentera également la charge de transmission réseau. Même si vous souhaitez interroger tous les champs de la table de données, essayez de ne pas utiliser le caractère générique *. Faire bon usage des définitions d'exclusion de champs intégrées peut apporter plus de commodité.
5. Utilisez ENUM au lieu de VARCHAR
Le type ENUM est très rapide et compact. En fait, il contient un TINYINT, mais il apparaît sous la forme d'une chaîne. De cette façon, il devient tout à fait parfait d'utiliser ce champ pour faire des listes de choix. Par exemple, si les valeurs de champs tels que le sexe, l'origine ethnique, le département et le statut sont limitées et fixes, vous devez utiliser ENUM au lieu de VARCHAR.
6. Utilisez NOT NULL autant que possible
Sauf si vous avez une raison très particulière d'utiliser des valeurs NULL, vous devez toujours garder vos champs NOT NULL. NULL nécessite en fait un espace supplémentaire et votre programme sera plus complexe lorsque vous effectuerez des comparaisons. Bien sûr, cela ne signifie pas que vous ne pouvez pas utiliser NULL. La réalité est très compliquée et il y aura toujours des situations dans lesquelles vous devrez utiliser des valeurs NULL.
7. Les tableaux de longueur fixe seront plus rapides
Si tous les champs du tableau sont de « longueur fixe », le tableau entier sera considéré comme « statique » ou « de longueur fixe ». Par exemple, la table ne contient aucun champ des types suivants : VARCHAR, TEXT, BLOB. Tant que vous incluez l'un de ces champs, la table n'est plus une "table statique de longueur fixe" et le moteur MySQL la traitera d'une autre manière.
Les tables de longueur fixe amélioreront les performances car MySQL recherchera plus rapidement. Parce que ces longueurs fixes facilitent le calcul du décalage des données suivantes, la lecture sera naturellement plus rapide. Et si le champ n'est pas de longueur fixe, chaque fois que vous souhaitez trouver le suivant, le programme doit trouver la clé primaire.
De plus, les tables de longueur fixe sont également plus faciles à mettre en cache et à reconstruire. Cependant, le seul effet secondaire est que les champs de longueur fixe gaspillent de l'espace, car les champs de longueur fixe nécessitent beaucoup d'espace, que vous les utilisiez ou non.
8. Grâce à la technologie "vertical split"
Vous pouvez diviser votre table en deux, une avec une longueur fixe et une avec une longueur variable. Division verticale La « division verticale » est une méthode permettant de transformer une table d'une base de données en plusieurs tables par colonnes, ce qui peut réduire la complexité de la table et le nombre de champs, atteignant ainsi des objectifs d'optimisation. Par exemple : Il existe un champ dans la table Utilisateur qui correspond à l'adresse du domicile. Ce champ est facultatif, sauf pour les informations personnelles lorsque vous travaillez dans la base de données, vous n'avez pas besoin de lire ou de réécrire ce champ fréquemment. Alors, pourquoi ne pas le mettre dans une autre table ? Cela permettra à votre table d'avoir de meilleures performances. Pensez-y, souvent, pour la table utilisateur, je n'ai que l'ID utilisateur, le nom d'utilisateur et le mot de passe, les rôles d'utilisateur. etc. seront utilisés fréquemment. Les tables plus petites auront toujours de meilleures performances. De plus, vous devez faire attention au fait que vous ne rejoindrez pas fréquemment les tables formées par ces champs séparés. Sinon, les performances seront pires que lorsqu'elles ne sont pas divisées, et ce sera une baisse de niveau extrême.
9. EXPLIQUEZ votre requête SELECT
L'utilisation du mot-clé EXPLAIN peut vous permettre de savoir comment MySQL traite votre instruction SQL. Cela peut vous aider à analyser les goulots d'étranglement des performances de vos instructions de requête ou de vos structures de table. Les résultats de la requête EXPLAIN vous indiqueront également comment votre clé primaire d'index est utilisée, comment votre table de données est recherchée et triée... etc., etc. Habituellement, nous pouvons ajouter le mot-clé EXPLAIN au début des instructions SELECT plus complexes, en particulier celles impliquant plusieurs tables. Vous pouvez utiliser phpmyadmin pour ce faire.
5. Optimisation du front-end
Après avoir optimisé le back-end et la base de données, la prochaine chose que nous devons faire est d'optimiser vos pages front-end et vos fichiers de ressources pour les pages de sortie, ce qui comprend principalement l'optimisation de images, JS et fichiers de style. Il est recommandé d'utiliser les outils de test de performances des pages Web suivants pour la détection et l'analyse, et des suggestions d'optimisation pertinentes seront données :
Outil PageSpeed développé par Google
Les développeurs peuvent utiliser PageSpeed pour évaluer les performances de leurs pages Web. et obtenez des suggestions sur la façon d'améliorer les performances.
Apprentissage recommandé : "Tutoriel vidéo PHP"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!