OVH Cloud OVH Cloud

chargement table en cache à telle heure

14 réponses
Avatar
herve
Bonjour,
Je veux un certain nombre de tables dans le cache de l'application qui
expires dans la nuit. Comment faire pour que ceux-ci soient rechargés
automatiquement à telle heure (je suis chez un hébergeur donc pas accès
à des scripts) et ne pénalise pas le chargement du premier internaute !?
a+
hervé

4 réponses

1 2
Avatar
Patrice
Je me demandais si le temps trop long (que tu constates ou que tu anticipes
?) était à une façon de faire déjà couteuse à la base par principe (par
exemple "méga initialisation" dans le OnStart).

Dans ce cas, il aurait état possible de choisir une structure plus
habituelle (mise en cache au moment où l'on en as besoin) sans avoir recours
à une thread de chargement....


--

"herve" a écrit dans le message de
news:
Patrice a écrit :

> Déjà comment sont elles chargées actuellement ?
>
> Si par exemple elles sont toutes chargées au lancement de l'application,


il
> pourrait être intéressant de charger individuellement chaque table au


moment
> où l'on en a besoin. De cette façon, le temps est réparti lors de


l'usage de
> l'application (au lieu d'être concentré à la connexion du premier
> internaute) et ce n'est pas forcément le premier internaute qui subira


ce
> temps mais le premier aui aura besoin d'une table donnée.
>
> Patrice
>
En fait c'est exactement comme celà que je faisais jusqu'à présent, mais
il s'agissait de petites tables de libellés qui de toute façon doivent
être chargé la première fois.

En plus je souhaite mettre en cache un datagrid (liste intermédiaire)
qui pourrait devenir gros (plusieurs milliers d'enregistrement avec
chacun qq dizaines de caractères).
Ma démarche actuelle irait vers un chargement séparé que ne supporterait
aucun utilisateur.
D'ou cette piste ...
a+


Avatar
Renaud COMTE [MVP]
Qu'on me corrige, mais je n'ai jamais parlé ni de session, de cache ou
d'application : je lance mon tread via une classe singleton

Ce pattern singleton permet a une classe d'avoir une et une seul instance
http://www.techheadbrothers.com/DesktopDefault.aspx?tabindex=1&tabid=7&AId7

Grosso merdo : la classe possede son propre espace memoire dans
l'application des la compilation qu'il s'agisse de web ou de win. (le fameux
shared/static)

Il suffit de l'instancier dans le global au demarrage, lancer sa methode
publique qui lance le thread et pis c'est tout...
j'utilise la meme choxe pour un gestionnaire de langue ou mon singleton






stocke dans un hascher type toute mes occurences de texte via un
Xpathnavigator : mes libellés sont en memoire independamment du context

Voila

Renaud COMTE [MVP]
---------------------------------------------
http://www.clubSPS.org
http://blog.spsclerics.com/
---------------------------------------------
[INFO] : Je me permet de rappeller l'importance de bien préciser la version
de SPS dans vos questions
cela eviterais des réponses erronées ou trompeuses comme récemment sur






la problématique de backup
Ca autoriserais aussi des tris plus efficaces via le moteur de recherche







Donc je vous propose donc de préfixer les posts via [SPS 2003] [SPS 2001]
[WSS]
a écrit dans le message de news:

Je parle de IE car je n'ai pas creusé la question de comment relancer une
session directement a partir de global.asax sans utiliser "d'aide
extérieure" cela dit il doit exister un moyen.



Sebastien


a écrit dans le message de
news:
> Bonjour,
>
> je vois les réponse de chacun si je reprend votre question le but du jeu
> c'est d'avoir constament en cache certaine tables j'insiste sur le
> constament afin que les utilisateurs aient toujours le même temps


d'accès
au
> site et surtout ne pas pénaliser celui qui se connecte en premier.
>
> Or je croyais avoir compris que le cache existe le temps qu'existe
> l'application en mémoire l'existence de l'application étant lié au fait
> qu'il y a au moins une session lancée sur le site. Cependant compte tenu
des
> solutions proposées de lancer un thread à une heure précise cela


signifie
> que le thread démarre ouvre en fait une session puis s'arrête en


attendant
> le prochain tick cependant si pendant le moment où le thread tourne
personne
> ne viens ouvrir de session alors le cache disparaitra quand


l'application
> s'arrêtera (comme il n'y a plus de session après l'arrêt du thread)
>
> voir :
>



http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/cpguide/html/cpconcacheapis.asp
>
> Il faut donc chercher un moyen de conserver une session constament


ouverte
> sur le serveur pour le forcer a conserver le cache, et non pas comme
> certaines réponses semblent vouloir le dire (cela dit il se peut que je
> comprenne mal) relancer à intervalle régulier des sessions car il


faudrait
> qu'un utilisateur se connecte au même moment pour bénéficier du cache.
>
> Pourquoi ne pas créer un compteur de session le faire évoluer en


fonction
> des connections et déconnections et quand il arrive à 0 générer
> automatiquement une session.
>
> pour ce faire peut être que le plus simple serait d'appeler une classe
> interopérant sur IE et lançant le IE présent sur le serveur avec une
> connection en localhost sur l'appli dès que le compteur passe à deux on
> éteint IE pas la peine de manger de la ressource il y a une personne
> connecté qui entretient le cache. En fait c'est un peu comme un feu il
faut
> juste garder des braises.
>
> Sebastien
>
> "herve" a écrit dans le message de
> news:
> > Bonjour,
> > Je veux un certain nombre de tables dans le cache de l'application qui
> > expires dans la nuit. Comment faire pour que ceux-ci soient rechargés
> > automatiquement à telle heure (je suis chez un hébergeur donc pas


accès
> > à des scripts) et ne pénalise pas le chargement du premier


internaute
!?
> > a+
> > hervé
>
>




Avatar
Bonjour,

je ne parlais pas spécialement de ton idée Renaud, Antoine F. dans son post
propose en 1 de lancer un thread à intervalle régulier, et d'autre post
semble garder cette idée de relancer à intervalle même dans la question de
départ on voit lancer le matin, je me demandais juste si cétait la meilleur
solution.

Je connais le pattern singleton je l'utilise aussi et dans ton post j'ai
bien vu que tu ne spécifiait pas session cache ou application. il ne fallait
pas prendre mon post comme quelque chose dirigé contre toi.

Je disais juste que sauf erreur de ma part le principe n'est pas de relancer
à intervalle régulier des threads de mise à jour du cache (ou plutot de
relance du cache) car de toute façon une fois le thread arrêté le cache est
effacé s'il n'y a plus d'autre session en cour sur l'application web. La
"persistance" du cache et son intérêt qu'en à l'accélération des temps de
réponse et lié au fait que l'application est en mémoire pour cela il faut
qu'il y ai au moins une session ouverte dessus après la façon de faire
importe peu.

Et puis j'ai bien précisé qu'il se pouvait que j'ai mal compris ce que
disais les participants et que je pouvais me tromper dans ma perception de
la notion de cache.

Sebastien


"Renaud COMTE [MVP]" a écrit dans le
message de news:
Qu'on me corrige, mais je n'ai jamais parlé ni de session, de cache ou
d'application : je lance mon tread via une classe singleton

Ce pattern singleton permet a une classe d'avoir une et une seul instance



http://www.techheadbrothers.com/DesktopDefault.aspx?tabindex=1&tabid=7&AId7

Grosso merdo : la classe possede son propre espace memoire dans
l'application des la compilation qu'il s'agisse de web ou de win. (le


fameux
shared/static)

Il suffit de l'instancier dans le global au demarrage, lancer sa methode
publique qui lance le thread et pis c'est tout...
>>> j'utilise la meme choxe pour un gestionnaire de langue ou mon


singleton
stocke dans un hascher type toute mes occurences de texte via un
Xpathnavigator : mes libellés sont en memoire independamment du context

Voila

Renaud COMTE [MVP]
---------------------------------------------
http://www.clubSPS.org
http://blog.spsclerics.com/
---------------------------------------------
[INFO] : Je me permet de rappeller l'importance de bien préciser la


version
de SPS dans vos questions
>>> cela eviterais des réponses erronées ou trompeuses comme récemment sur
la problématique de backup
>>> Ca autoriserais aussi des tris plus efficaces via le moteur de


recherche

Donc je vous propose donc de préfixer les posts via [SPS 2003] [SPS 2001]
[WSS]
a écrit dans le message de news:

> Je parle de IE car je n'ai pas creusé la question de comment relancer


une
> session directement a partir de global.asax sans utiliser "d'aide
> extérieure" cela dit il doit exister un moyen.
>
>
>
> Sebastien
>
>
> a écrit dans le message de
> news:
> > Bonjour,
> >
> > je vois les réponse de chacun si je reprend votre question le but du


jeu
> > c'est d'avoir constament en cache certaine tables j'insiste sur le
> > constament afin que les utilisateurs aient toujours le même temps
d'accès
> au
> > site et surtout ne pas pénaliser celui qui se connecte en premier.
> >
> > Or je croyais avoir compris que le cache existe le temps qu'existe
> > l'application en mémoire l'existence de l'application étant lié au


fait
> > qu'il y a au moins une session lancée sur le site. Cependant compte


tenu
> des
> > solutions proposées de lancer un thread à une heure précise cela
signifie
> > que le thread démarre ouvre en fait une session puis s'arrête en
attendant
> > le prochain tick cependant si pendant le moment où le thread tourne
> personne
> > ne viens ouvrir de session alors le cache disparaitra quand
l'application
> > s'arrêtera (comme il n'y a plus de session après l'arrêt du thread)
> >
> > voir :
> >
>



http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/cpguide/html/cpconcacheapis.asp
> >
> > Il faut donc chercher un moyen de conserver une session constament
ouverte
> > sur le serveur pour le forcer a conserver le cache, et non pas comme
> > certaines réponses semblent vouloir le dire (cela dit il se peut que


je
> > comprenne mal) relancer à intervalle régulier des sessions car il
faudrait
> > qu'un utilisateur se connecte au même moment pour bénéficier du cache.
> >
> > Pourquoi ne pas créer un compteur de session le faire évoluer en
fonction
> > des connections et déconnections et quand il arrive à 0 générer
> > automatiquement une session.
> >
> > pour ce faire peut être que le plus simple serait d'appeler une classe
> > interopérant sur IE et lançant le IE présent sur le serveur avec une
> > connection en localhost sur l'appli dès que le compteur passe à deux


on
> > éteint IE pas la peine de manger de la ressource il y a une personne
> > connecté qui entretient le cache. En fait c'est un peu comme un feu il
> faut
> > juste garder des braises.
> >
> > Sebastien
> >
> > "herve" a écrit dans le message de
> > news:
> > > Bonjour,
> > > Je veux un certain nombre de tables dans le cache de l'application


qui
> > > expires dans la nuit. Comment faire pour que ceux-ci soient


rechargés
> > > automatiquement à telle heure (je suis chez un hébergeur donc pas
accès
> > > à des scripts) et ne pénalise pas le chargement du premier
internaute
> !?
> > > a+
> > > hervé
> >
> >
>
>




Avatar
Renaud COMTE [MVP]
Je comprends et je fait mon mea culpa

A bientot

Renaud COMTE [MVP]
---------------------------------------------
http://www.clubSPS.org
http://blog.spsclerics.com/
---------------------------------------------
1 2