Toon posts:

[VB.NET/ASP.NET]Caching van variabelen werkt niet.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer binnen .net caching aan de praat te krijgen voor bepaalde delen van een pagina die duur zijn om te maken. (Een menufunctie die recursief opgebouwd wordt en enkele honderden items (en dito queries) nodig heeft.

Ik volg de voorbeelden van: http://www.dotnetjunkies..../doc/cachingoverview.aspx

Het echt zoeken op google/forum werkt niet gemakkelijk, met mijn foutmelding
Exception Details: System.Web.HttpException: Cache is not available
krijg ik geen hits, en zoek ik gewoon op "cache" dan krijg ik erg veel meuk terug.

Ik gebruik deze imports:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
Imports Microsoft.Data.Odbc
Imports System.Text.Regularexpressions
Imports System.Data.sqlclient
Imports System.Data.OleDb
Imports System.Data
Imports System
Imports System.Diagnostics
Imports System.Xml
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Imports System.Web.Caching


En het stuk met betrekking op de cache is:
Visual Basic .NET:
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
    Public Function BuildRootMenu(ByVal iDepth As Integer) As String
        ' This function Builds a Menu, starting by the root and returns the menu as a string.
        ' This function caches the menu for 60 seconds.

        Dim RootMenu As String
        RootMenu = Cache("CachedRootMenu")

        If RootMenu Is Nothing Then
            RootMenu = Me.BuildDeepMenu("-1", iDepth, 0)
            Cache("CachedRootMenu") = RootMenu
            Cache.Insert("CachedRootMenu", RootMenu, Nothing, DateTime.Now.AddMinutes(1), TimeSpan.Zero)

            Me.strCache = "Menu: Cache Miss"
        Else
            Me.strCache = "Menu: Cache Hit!"
        End If
        Return RootMenu
    End Function


En ik snap niet waarom hij roept cache is not available?
(Hij struikeld over regel 1006)

[ Voor 8% gewijzigd door Verwijderd op 07-04-2005 10:12 ]


  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
probeer eens: System.Web.HttpContext.Current.Cache te gebruiken ipv alleen Cache

de enige echte cache is de cache van de huidige context. anders 'doet ie het niet' :-)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:27

gorgi_19

Kruimeltjes zijn weer op :9

Gebruik dan de cache van HttpRuntime.Cache :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Gorgi: Werkt, kan slotje op :)

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
in msdn staat dat HttpRuntime.Cache is voor de huidige application
ook staat er dat HttpContext.Cache is voor het huidige request ..

zit daar nou nog verschil tussen ?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:27

gorgi_19

Kruimeltjes zijn weer op :9

joopst schreef op donderdag 07 april 2005 @ 10:52:
in msdn staat dat HttpRuntime.Cache is voor de huidige application
ook staat er dat HttpContext.Cache is voor het huidige request ..

zit daar nou nog verschil tussen ?
Ja, in performance is er geen verschil. Als je met multithreading aan de gang gaat (mbv bijvoorbeeld Timer), dan is HttpContext.Current (en dus de cache) niet beschikbaar. Via HttpRuntime.Cache is hij wel benaderbaar.

[ Voor 5% gewijzigd door gorgi_19 op 07-04-2005 11:01 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1