Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Variables applications

7 réponses
Avatar
Fred
Bonjour,

J'ai un site en 6 langues pour lequel je gère les traductions sous forme
de variable application.

Ex :
Application("TRAD_FR_8") = "Nous contacter"
Application("TRAD_EN_8") = "Contact us"
...

Pour afficher cette traduction, il me suffit d'appeler cette variable
par : Response.Write Application("TRAD_" & maLangue & "_" & monNumero)

Après divers essais (traductions en base de données, en session), c'est
ce qu'il y a avait de plus performant.

Mais à l'époque, j'avais 400 traductions en 2 langues, soit 800 variables.

Aujourd'hui, j'ai 850 traductions en 6 langues, soit 5100 variables
chargées.

Est-ce-que cela peut nuire aux performances de mon site, sachant que je
ne suis pas limité par la RAM du serveur (dédié, avec 1Go, dont 400
utilisés) ?

Y'a-t-il un meilleur moyen pour gérer les traductions ?

Merci pour vos conseils,

@+

Fred

7 réponses

Avatar
Martin CLAVREUIL
Bonjour,

1/ Le choix de charger l'objet 'application' se fait toujours au déficit de
la RAM mais tu dis ne pas en manquer.
2/ L'objet application serialize son contenu mais si tu ne ranges que des
chaines le marchaling est peu consommateur.
J'aurai donc tendance à te conseiller de rester sur cette option tant que tu
n'est pas en .net. Si tu migres en asp.net, je te conseille, dans ce cas,
utiliser des ressources (resx) qui sont des classes statiques, elle aussi
permanentes en mémoire.
--
Martin CLAVREUIL
www.miagazine.com

"Fred" a écrit dans le message de news:
43a81e68$0$21284$
Bonjour,

J'ai un site en 6 langues pour lequel je gère les traductions sous forme
de variable application.

Ex :
Application("TRAD_FR_8") = "Nous contacter"
Application("TRAD_EN_8") = "Contact us"
...

Pour afficher cette traduction, il me suffit d'appeler cette variable par
: Response.Write Application("TRAD_" & maLangue & "_" & monNumero)

Après divers essais (traductions en base de données, en session), c'est ce
qu'il y a avait de plus performant.

Mais à l'époque, j'avais 400 traductions en 2 langues, soit 800 variables.

Aujourd'hui, j'ai 850 traductions en 6 langues, soit 5100 variables
chargées.

Est-ce-que cela peut nuire aux performances de mon site, sachant que je ne
suis pas limité par la RAM du serveur (dédié, avec 1Go, dont 400 utilisés)
?

Y'a-t-il un meilleur moyen pour gérer les traductions ?

Merci pour vos conseils,

@+

Fred


Avatar
jbongran
Martin CLAVREUIL wrote:
Bonjour,

1/ Le choix de charger l'objet 'application' se fait toujours au
déficit de la RAM mais tu dis ne pas en manquer.
2/ L'objet application serialize son contenu mais si tu ne ranges que
des chaines le marchaling est peu consommateur.
J'aurai donc tendance à te conseiller de rester sur cette option tant
que tu n'est pas en .net. Si tu migres en asp.net, je te conseille,
dans ce cas, utiliser des ressources (resx) qui sont des classes
statiques, elle aussi permanentes en mémoire.

"Fred" a écrit dans le message de news:
43a81e68$0$21284$
Bonjour,

J'ai un site en 6 langues pour lequel je gère les traductions sous
forme de variable application.

Ex :
Application("TRAD_FR_8") = "Nous contacter"
Application("TRAD_EN_8") = "Contact us"
...

Pour afficher cette traduction, il me suffit d'appeler cette
variable par
Response.Write Application("TRAD_" & maLangue & "_" & monNumero)



Après divers essais (traductions en base de données, en session),
c'est ce qu'il y a avait de plus performant.

Mais à l'époque, j'avais 400 traductions en 2 langues, soit 800
variables. Aujourd'hui, j'ai 850 traductions en 6 langues, soit 5100
variables
chargées.

Est-ce-que cela peut nuire aux performances de mon site, sachant que
je ne suis pas limité par la RAM du serveur (dédié, avec 1Go, dont
400 utilisés) ?

Y'a-t-il un meilleur moyen pour gérer les traductions ?

Merci pour vos conseils,

@+

Fred





Tout a fait d'accord.
On pourrait aussi imaginer d'inclure les fichiers de traduction (à la
volée), ou encore de generer automatiquement plusieurs sites statiques (ou
pas) dans chaques langues, mais là c'est un gros "chantier"
Avatar
Fred
jbongran a écrit :
Martin CLAVREUIL wrote:
Bonjour,

1/ Le choix de charger l'objet 'application' se fait toujours au
déficit de la RAM mais tu dis ne pas en manquer.
2/ L'objet application serialize son contenu mais si tu ne ranges que
des chaines le marchaling est peu consommateur.



Tout a fait d'accord.
On pourrait aussi imaginer d'inclure les fichiers de traduction (à la
volée), ou encore de generer automatiquement plusieurs sites statiques (ou
pas) dans chaques langues, mais là c'est un gros "chantier"






Merci pour vos réponses. Elles confirment mes tests.
Qu'entends-tu exactement par "inclure les fichiers de traduction à la
volée" ?

Tu penses faire comme en php ou on charge un include contenant des
variables ou un tableau avec les traductions adéquates à chaque page ?

@+

Fred
Avatar
jbongran
Fred wrote:
jbongran a écrit :
Martin CLAVREUIL wrote:
Bonjour,

1/ Le choix de charger l'objet 'application' se fait toujours au
déficit de la RAM mais tu dis ne pas en manquer.
2/ L'objet application serialize son contenu mais si tu ne ranges
que des chaines le marchaling est peu consommateur.



Tout a fait d'accord.
On pourrait aussi imaginer d'inclure les fichiers de traduction (à la
volée), ou encore de generer automatiquement plusieurs sites
statiques (ou pas) dans chaques langues, mais là c'est un gros
"chantier"




Merci pour vos réponses. Elles confirment mes tests.
Qu'entends-tu exactement par "inclure les fichiers de traduction à la
volée" ?

Tu penses faire comme en php ou on charge un include contenant des
variables ou un tableau avec les traductions adéquates à chaque page ?

@+

Fred



Exactement,
Au passage, la directive include (file ou virtual) n'est pas propre à php,
mais fait plutôt parti d'un support de directives par les serveurs web
http://www.microsoft.com/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/asp/iiwainc.htm
Avatar
Fred
jbongran a écrit :
Qu'entends-tu exactement par "inclure les fichiers de traduction à la
volée" ?





Exactement,



Le fait de charger un tableau de 850 éléments à chaque page ne
risque-t-il pas de faire baisser les performances (le site fait plus de
9 millions de pages vues/mois) ?

Fred
Avatar
jbongran
Fred wrote:
jbongran a écrit :
Qu'entends-tu exactement par "inclure les fichiers de traduction à
la volée" ?





Exactement,



Le fait de charger un tableau de 850 éléments à chaque page ne
risque-t-il pas de faire baisser les performances (le site fait plus
de 9 millions de pages vues/mois) ?

Fred



Si, pour une volumètrie de cette ordre, l'option include est a oublier.
Autre solution:
Une bdd contenant les 850 éléments. Un site par langue et un global.asa qui
charge les variables application à partir de la bdd (avec une requête ne
retournant que la langue du site) peut être un bon compromis, notamment pour
la maintenance des éléments.
Voir a ce sujet la syntaxe getstring ou getRows de l'objet ADO (beaucoup
plus efficace qu'une boucle) ou carrement l'usage de procédure stockée sur
la BDD.
Le fait est que si cela fonctionne bien comme ça, ne change rien.
Avatar
Fred
jbongran a écrit :
Le fait de charger un tableau de 850 éléments à chaque page ne
risque-t-il pas de faire baisser les performances (le site fait plus
de 9 millions de pages vues/mois) ?

Fred



Si, pour une volumètrie de cette ordre, l'option include est a oublier.
Autre solution:
Une bdd contenant les 850 éléments. Un site par langue et un global.asa qui
charge les variables application à partir de la bdd (avec une requête ne
retournant que la langue du site) peut être un bon compromis, notamment pour
la maintenance des éléments.



En fait, initialement, j'utilisais la base de données (MySQL), mais le
nombre de requête était vraiment trop élevé.

Du coup, je gère mes traductions dans la base de données et dès que je
fais des modifs, je régénère un fichier de variables application.

C'est ce que j'ai trouvé de plus performant, mais je voulais juste
savoir si on pouvait faire encore mieux ;-)

Merci à tous pour votre aide.

@+

Fred