2010-08-23 3 views
1

Commençons par un peu de contexte. Qu'est-ce que j'ai dans mes mains?Organiser CSS et Javascript dans un site multiprojet modèle unique

  • applications Web multiples (Tous .NET: WebForms et MVC)
  • modèle interface utilisateur commune
  • Chaque application possède également ses propres éléments d'interface utilisateur.
  • Plusieurs fichiers pour css/javascript. Certains communs à toutes les applications, certains spécifiques à l'application.
  • Dixièmes de fichiers par page = plusieurs demandes par page = lent.

Question: Avez-vous des idées ou des commentaires sur mes idées pour atteindre les objectifs suivants?

  • Réduit le nombre de requêtes au minimum.
  • Réduire css et javascript.
  • Utilisez un CDN pour les distribuer.
  • Avoir une vie et être capable de gérer la zone de l'interface utilisateur.

Idea 1

centraliser l'interface utilisateur dans un projet. Chaque widget UI sera là avec un échantillon (qui peut être testé plus tard).

Je peux "construire" l'ui: réduire, grouper, publier à un endroit global connu. Les applications peuvent créer un lien vers ces fichiers globaux et utiliser les éléments de l'interface utilisateur.

Cela va forcer un peu de discipline lors de l'utilisation de l'interface utilisateur. Ce ne sera pas un "hack CSS et vous avez terminé". Et après 3 mois tout est plein de hacks et vous ne savez pas par où commencer pour réparer quelque chose.

Le mauvais: vous travaillez sur une application mais la partie de l'interface utilisateur vous devez d'abord travailler dans un autre projet. Allez-y, créez vos widgets, puis utilisez-les dans votre application.

Idée 2

Oublier l'idée du CDN et d'utiliser certains minifier/packer .NET dynamique. Je vais partager les parties de l'interface utilisateur de base et chaque application générera dynamiquement les paquets dont ils ont besoin dans l'exécution. Le mauvais: Aucun CDN, générer dynamiquement quelque chose que vous savez est statique, pas de place centralisée pour l'interface utilisateur (vous avez une base commune, mais rien d'autre).

Répondre

1

Nous faisons quelque chose de similaire en utilisant des externals dans SVN. C'est à dire. avoir une copie maîtresse de façon centralisée (un projet séparé serait judicieux), puis utiliser des éléments externes SVN pour obtenir une mise à jour et la distribuer à tous les emplacements qui en ont besoin. Si vous avez utilisé des numéros de version, vous pouvez également obtenir des CDN et également contourner les problèmes de publication lorsque certains sites sont publiés à différentes étapes. Je suppose que vous ne pouvez pas utiliser SVN mais juste une idée.La réduction peut être faite avec le compresseur YUI, beaucoup d'informations à ce sujet dans la nature.

+0

Maintenant, je fais cela: svn external sur l'interface utilisateur sur chaque projet. Ensuite, j'inclus tous les fichiers dont j'ai besoin dans chaque page. Pour le ** CDN ** je pensais à la construction de l'interface utilisateur publiez-le dans un dossier nommé après le numéro de validation de la version. De cette façon, les applications peuvent mettre à jour leurs widgets de manière asynchrone et, au besoin, pointer vers la bonne version. – graffic

+0

Le numéro de version contourne également les problèmes de mise en cache que vous rencontrerez avec les utilisateurs existants. C'est à dire. lorsqu'une feuille de style, un fichier js, etc. est mis en cache localement par un navigateur. – ArtificialGold

Questions connexes