Je suis nouveau dans le domaine de l'évolutivité du site. Pouvez-vous me suggérer des techniques de fabrication d'un site Web évolutif pour un grand nombre d'utilisateurs? P>
10 Réponses :
bonne chance p>
Développez votre site à l'aide de techniques Solid OOP. Vous aurez besoin de votre site pour être modulaire, car tous les goulots d'étranglement de la performance ne sont pas évidents au début. Soyez prêt à refacturer des parties de votre site lorsque le trafic augmente. La première phrase que j'ai écrite vous aidera à le faire plus facilement et en toute sécurité. En outre, utilisez le développement axé sur les tests, car le refacteur signifie de nouveaux bugs introduits et le bon TDD est bon pour les attraper avant d'entrer dans la production.
Séparez autant que possible code côté client du code côté serveur, car ils seront susceptibles de servir de différents serveurs, si votre trafic de site justifie cela.
Lisez des articles (lire les conseils Yslow par exemple). p>
gl p>
Check out Cette conversation par rasmus lerdorf (créateur de PHP) P >
spécialement page 8 et au-delà. P>
Si vous vous attendez à ce que votre site augmente au-delà des capacités d'un seul serveur, vous devez planifier avec soin. Concevoir de sorte que ce qui suit sera possible: - p>
Autre que cela, tout ce que vous pouvez faire est que le stress testez votre site, calculez où les goulots d'étranglement sont et essaient de les concevoir. P>
D'accord, j'ajouterais que la mise en cache est probablement la première chose à faire lors de la création d'un grand site.
Oui. Assurez-vous que les fonctions de cache de MySQL sont bien configurées et utilisez un cache robuste pour votre code. Il y a plusieurs mentionnées dans d'autres réponses qui sont excellentes.
Très similaire: Comment PHP a-t-il fait la bonne voie? p>
L'évolutivité n'est pas un petit sujet et certainement plus important que ce qui peut être raisonnablement couvert dans une seule question. P>
Par exemple, avec quelques types d'applications, des jointures (en SQL) ne font pas échelle, ce qui soulève toutes sortes de stratégies de mise en cache et de barres. P>
Beanstalk est un autre outil d'évolutivité et de performance dans des sites PHP haute performance. Comme le memcache (type différent). P>
par ordre d'importance: p>
Si vous exécutez PHP, utilisez un cache de fonctionnement comme APC . (Il est suffisamment important d'être intégré dans la prochaine génération de PHP.) P> li>
Utilisez Yslow ou Vitesse de la page Google pour identifier les goulots d'étranglement. (Cela révélera des problèmes structurels avec votre site Web qui affectent les performances du client et du serveur.) P> li>
Assurez-vous que votre serveur Web envoie un en-tête d'expiration approprié pour le contenu statique (images, JavaScript, CSS), de sorte que le navigateur puisse la mettre en cache correctement. (Yslow vous avertira aussi à ce sujet.) P> li>
Utilisez un accélérateur HTTP, tel que vernis . ( Cette image dit tout - et ils déjà em> avaient un http accélérateur en place.) p> li> ol>
Un certain nombre de personnes ont mentionné des outils pour identifier des goulots d'étranglement, ce qui est bien sûr nécessaire. Vous ne pouvez pas dépenser du temps productif accélérant quelque chose sans savoir où il est lent. Mais l'autre chose que vous devez savoir est l'endroit où votre évolutivité cible réside. Est-il en rapport qualité-prix pour passer quelques mois à rendre votre échelle de votre site au même nombre d'utilisateurs que Twitter si elle sera utilisée par trois personnes à HR? Avez-vous un taux de transaction connu, ou une latence de réponse ou un nombre d'utilisateurs, dans les exigences du produit? Si tel est le cas, ciblez ces chiffres avec votre stratégie d'optimisation. Sinon, trouver ceux-ci em> avant de poursuivre le rat de performance dans le trou. P>
Le plus gros problème d'évolutivité est généralement des ressources partagées telles que les DBMS. Le problème se pose car les DBMS n'ont généralement aucun moyen de détendre des garanties de cohérence. p>
Si vous souhaitez augmenter l'évolutivité lorsque vous utilisez quelque chose comme MySQL, vous devez modifier votre conception de schéma pour détendre la cohérence. p>
Par exemple, vous pouvez séparer votre schéma de base de données pour que votre modèle de données normalisé pour écrit et une pièce de lecture répliquée en lecture seule pour les 90% des opérations de lecture. Les données en lecture seule peuvent être diffusées sur plusieurs serveurs. P>
Un autre moyen d'augmenter l'évolutivité d'une base de données est de partitionner les données, par ex. Séparez les données dans une base de données pour chaque ministère et les agrégez dans l'ORM ou dans le SGBD. P>
Les données d'agrégation de la couche ORM introduisent la complexité du niveau d'application qui pourrait être lente pour des langues telles que Ruby et PHP. De plus, c'est plus difficile à gérer.
En plus des autres suggestions, examinez vos sites dans des niveaux, comme dans architecture multitère a >. Si cela est bien fait, vous pouvez ensuite utiliser un serveur par niveau. P>