Côté Client, la logique OU logique côté Serveur?

J'ai fait quelques projets web, et la plupart des difficultés que j'ai rencontré (les questions, les confusions) peut être trouvé avec de l'aide. Mais j'ai encore une question importante, même après avoir posé des développeurs expérimentés: Lorsque des fonctionnalités peuvent être mises en œuvre à la fois avec le code côté serveur et côté client de script (JavaScript), dont l'une doit être préférée?

Un exemple simple:

Pour effectuer le rendu d'une page html dynamique, je peux le format de la page dans le code côté serveur (PHP, python) et l'utilisation d'Ajax pour récupérer la page mise en forme et de les rendre directement (plus logique sur le serveur-côté, moins sur le côté client).

Je peux aussi utiliser de l'Ajax pour récupérer les données (non formaté, JSON) et utiliser un script côté client pour le format de la page et la rendre avec plus de traitement (le serveur reçoit les données à partir d'une base ou d'une autre source, et la renvoie au client avec JSON ou XML. De plus logique sur le côté client et moins sur le serveur).

Alors, comment puis-je décider lequel est le mieux? Ce qui une offre de meilleures performances? Pourquoi? Lequel est le plus facile à utiliser?

Avec les navigateurs' JS moteurs de l'évolution, JS peut être interprété en moins de temps, donc si je préfère de script côté client?

D'autre part, avec le matériel évolue, les performances du serveur est en croissance et le coût de rompre la logique côté va diminuer, donc si je préfère de script côté serveur?

EDIT:

Avec les réponses, je veux donner un bref résumé.

Pros de la logique client:

  1. Meilleure expérience utilisateur (plus rapide).
  2. Moins de bande passante réseau (baisse des coûts).
  3. Une évolutivité accrue (réduction de la charge du serveur).

Pros de la logique côté serveur:

  1. Les questions de sécurité.
  2. Une amélioration de la disponibilité et de l'accessibilité (les appareils mobiles et les anciens navigateurs).
  3. Un meilleur RÉFÉRENCEMENT.
  4. Facilement extensible (peut ajouter d'autres serveurs, mais ne peut pas rendre le navigateur plus rapide).

Il semble que nous avons besoin d'un équilibre entre ces deux approches face à un scénario spécifique. Mais comment? Quelle est la meilleure pratique?

Je vais utiliser côté client, la logique, sauf dans les conditions suivantes:

  1. De sécurité critiques.
  2. Des groupes spéciaux (désactivé JavaScript, des appareils mobiles, et autres).
InformationsquelleAutor Zhu Tao | 2009-10-04