Avatar billede c-sharp Nybegynder
07. november 2006 - 13:10 Der er 13 kommentarer og
1 løsning

Hjælp til at cache xml

Jeg har en side der henter noget xml på en side (det er en dynamisk side der generer noget xml). Da det er meget tungt at hente hver gang der skal laves en visning vil jeg gerne cache det, men hvordan gør jeg det smartest, jeg har følgende kode:

            XmlDbConnection cn = new XmlDbConnection();
                cn.ConnectionString = "http://www.test.dk/lavXml.asp";
                cn.Open();

                XmlDbCommand cmd = new XmlDbCommand();
                cmd.CommandText = sql_sb.ToString();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cn;

                Wilson.XmlDbClient.XmlDbDataAdapter da = new Wilson.XmlDbClient.XmlDbDataAdapter(cmd);
                da.Fill(dt);
                cn.Close();
Avatar billede arne_v Ekspert
07. november 2006 - 13:22 #1
hvad med det mest åbenlyse ?

(gemme enten DataSet eller XmlDocument eller String i Cache objektet)
Avatar billede c-sharp Nybegynder
07. november 2006 - 13:39 #2
DataTablen indholder en konkretsøgning, så den kan ikke bruges. Når du siger Xmldokumentet skal jeg så streame siden også gemme det som en fil og bruge den, eller hvordan?
Avatar billede websam Nybegynder
07. november 2006 - 13:45 #3
Kan du bruger dette ?

http://www.devx.com/asp/Article/21751/0/page/2

Godt nok i VB men, mon ikke det går ;o)

/Websam
Avatar billede c-sharp Nybegynder
07. november 2006 - 14:31 #4
Jeg er bare ikke helt med på hvordan jeg bruge det eksempel i mit kode.

Som jeg lige ser det skal jeg hente xml dokumentet over i en string men hvordan får jeg Wilsoon's XmlAdapater til at læse fra den string?
Avatar billede arne_v Ekspert
07. november 2006 - 15:39 #5
nu er jeg total desorienteret

hvis ikke data er konstant - hvad mener du saa med at cache ?
Avatar billede c-sharp Nybegynder
07. november 2006 - 17:04 #6
jeg kan vel godt cache data i eks. 15 min selvom data ikke er konstant.
Avatar billede c-sharp Nybegynder
07. november 2006 - 20:50 #7
Jeg er selv kommet frem til følgende, hvad siger i til det?

  DateTime tid = DateTime.MinValue;

  if (Application["tid"] != null)
      tid = (DateTime)Application["tid"];

  if(tid.AddMinutes(15) < DateTime.Now)
  {
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://http://www.test.dk/lavXml.asp");
      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
      StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
      string xml = reader.ReadToEnd();

      XmlDocument doc = new XmlDocument();

      try
      {
          doc.LoadXml(xml);
      }
      catch
      {
          Response.Redirect("fejl.htm");
      }

      doc.Save(Server.MapPath("temp.xml"));
            Application["tid"] = DateTime.Now;
    }
           
    .......
    .......
Avatar billede arne_v Ekspert
08. november 2006 - 04:28 #8
Cache's Insert metode kan angive hvornår objektet ikke skal ud af Cache igen
Avatar billede arne_v Ekspert
08. november 2006 - 04:29 #9
men ellers er det ret normal at lade opdaterings kode fjerne det de opdaterer fra
Cache
Avatar billede c-sharp Nybegynder
08. november 2006 - 08:57 #10
hvordan vil du så foreslå at jeg handler det?
Avatar billede c-sharp Nybegynder
08. december 2006 - 09:22 #11
er der mere hjælp her, eller så smid et svar arne_v så er der point...
Avatar billede arne_v Ekspert
09. december 2006 - 01:51 #12
jeg har stadig ikke fattet hvsd du leder efter

du kan hente noget og gemme det i Cache så du slipper for at hente det næste
gange det requests

men det forudsætter at det er præcis det samme

det indbyggede Cache objekt er fremragende til det
Avatar billede c-sharp Nybegynder
05. januar 2007 - 13:55 #13
Smid et svar arne så får du tak fot hjælpen og point :O)
Avatar billede arne_v Ekspert
05. januar 2007 - 15:27 #14
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester