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é

10 réponses

1 2
Avatar
YJLAMOTTE
Bonjour,
Moi je vois au moins 3 solutions mais pas forcement exploitable:
La première : se lever la nuit pour se connecter :).
La seconde : si IIS redémarre regulierement, mettre le code nécessaire dans
le ApplicationStart du global.asax
La 3eme : un ptit service NT sur ta machine qui va faire une HTTPRequest sur
ton site.

Tout va dépendre de ton architecture, si aucune n'est faisable, dis nous en
plus.

"herve" wrote:

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
herve
YJLAMOTTE a écrit :

Bonjour,
Moi je vois au moins 3 solutions mais pas forcement exploitable:
La première : se lever la nuit pour se connecter :).


Je crois que c'est la seul solution ;-)

La seconde : si IIS redémarre regulierement, mettre le code nécessaire dans
le ApplicationStart du global.asax


est-ce possible de faire tomber mon site (à partir de mon code asp ;-)).

La 3eme : un ptit service NT sur ta machine qui va faire une HTTPRequest sur
ton site.


sur un site asp 3 (chez un client), j'avais fait un script, ce qui avait
le mérite en plus de nettoyer le serveur chaque nuit (on avait un pb de
fuite de mémoire ... de mémoire)

Tout va dépendre de ton architecture, si aucune n'est faisable, dis nous en
plus.



C'est pour celà que j'ai précisé que j'étais chez un hébergeur et donc
que j'aurai souhaité une sorte de time asp.net !!
hervé

"herve" wrote:


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
Antoine F.
Ou en combinant le tout ....

1. Placer dans le Application_Start un processus sur un thread séparé
qui n'aurait que pour rôle que de lancer cette mise à jour à intervalles
réguliers.

2. Dans le cas où l'hébergeur redémarre le serveur ou si le process
redémarre de lui-même, le application_start serait en mesure de lancer
à nouveau le processus de surveillance....

non?

.antoine
Avatar
Renaud COMTE [MVP]
Je me tate ...

A voir avec une instance de singleton (comme ca c'est unique) qui lance un
thread separe en sleep de 24 h

Tu lance le singleton au demarrage et lui lance le thread.start sur la
methode de refraichissement
Il charge tes datas et se met a dormir dans son thread et il attend, ainsi
de suite

En pratique , le singleton a son propre espace mémoire dans l'application
mémoire. une fois lance, il vis sa vie donc ....

Vos avis ?

Renaud COMTE [MVP]
---------------------------------------------
http://www.clubSPS.org
http://blog.spsclerics.com/
---------------------------------------------
Avatar
Patrice
Déjà comment sont elles chargées actuellement ?

Si par exemple elles sont toutes chargées au lancement de l'application, uil
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

--

"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
herve
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
herve
salut,
Si ce n'est pas trop compliqué et vous avez du code à me montrer car je
ne sais pas lancer un thread séparé (ni ce qu'un un singleton) pour
faire cette fonction de lancement.
a+
hervé
Avatar
Renaud COMTE [MVP]
Suffit de demander

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

Thread : (surtout Program 5) : http://www.codeproject.com/csharp/csharp.asp

Aprés à vous de jouer et de fouillez un peu avec google

Voila

Renaud COMTE [MVP]
---------------------------------------------
http://www.clubSPS.org
http://blog.spsclerics.com/
---------------------------------------------
Avatar
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
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é




1 2