none
Asp.Net MVC Outputcache RRS feed

  • Soru

  • merhaba Action lara Attribute olarak eklemiş olduğum outputcache nasıl clear temizleye bilirim.

    [OutputCache(Duration = 600, VaryByParam = "*")]

    Panelden Cache Temizle butonunu tıklayınca tüm cache temizleyecek.

    21 Temmuz 2016 Perşembe 07:54

Yanıtlar

  • Neden bunu button ile yapmaya çalışıyorsun?

      <system.web>
        <caching>
          <sqlCacheDependency enabled="true">
            <databases>
              <add connectionStringName="DatabaseConnection" name="mainSqlDependency" pollTime="500" />
            </databases>
          </sqlCacheDependency>
        </caching>
      </system.web>

    web configde caching i enable edersin;

    [OutputCache(SqlDependency = "mainSqlDependency:tablo_adı1;mainSqlDependency:tablo_adı2", Duration = 3600)]

    şeklinde belirttin mi database değişikliğinde kendisi otomatik cache'i yeniler.

    Önemli NOT: bu işlem connectionstringde belirtilen database'de kendisine 1-2 tablo ve trigger'lar ekler


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    21 Temmuz 2016 Perşembe 09:37
    Moderatör

Tüm Yanıtlar

  • HttpResponse.RemoveOutputCacheItem'e url verince silmesi lazım.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    21 Temmuz 2016 Perşembe 08:21
    Moderatör
  • Onu denedim hocam ancak silmiyor yani şöyle Panel dizini Areas/app/Home/Cacheremove bu şekilde action

    ama kullanıcı dizini /Controller/Home/Index sanırım bu kısımda sorun var ama bunu nasıl yapacağım bilmiyorum.

    Index kısmında OutputCache yapıyorum bilmem anlata bildim mi :(

    21 Temmuz 2016 Perşembe 08:36
  • var url = Url.Action("Index", "Home");
     HttpResponse.RemoveOutputCacheItem(url);

    bu şekilde yaptığımda break point koyarak izledğimde /app klasörünü baz alıyor ancak bana en üst dizindeki Controller çıkmasını istiyorum.

    21 Temmuz 2016 Perşembe 08:52
  • var url = Url.Action("Index", "Home", new { @area = string.Empty });
    şeklinde denermisin.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    21 Temmuz 2016 Perşembe 08:58
    Moderatör
  • denedim hocam ama temizlemiyor :(
    21 Temmuz 2016 Perşembe 09:10
  • Yanlız hocam break point ile takip ettiğimde 

     [OutputCache(Duration = 600, VaryByParam = "*")]
            public ActionResult Index()
            {

    }

    ilk açılışta bu action çalışıyor daha sonraki yenilediğimde bu action düşmüyor OutputCache oldugu için sanırım.O zaman hocam bunu attribut kısmında çözmem gerekyor,bunu nasıl çözerim

    21 Temmuz 2016 Perşembe 09:30
  • Neden bunu button ile yapmaya çalışıyorsun?

      <system.web>
        <caching>
          <sqlCacheDependency enabled="true">
            <databases>
              <add connectionStringName="DatabaseConnection" name="mainSqlDependency" pollTime="500" />
            </databases>
          </sqlCacheDependency>
        </caching>
      </system.web>

    web configde caching i enable edersin;

    [OutputCache(SqlDependency = "mainSqlDependency:tablo_adı1;mainSqlDependency:tablo_adı2", Duration = 3600)]

    şeklinde belirttin mi database değişikliğinde kendisi otomatik cache'i yeniler.

    Önemli NOT: bu işlem connectionstringde belirtilen database'de kendisine 1-2 tablo ve trigger'lar ekler


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com



    21 Temmuz 2016 Perşembe 09:37
    Moderatör
  • Bunu kullana bilmem için Database de Sqldepency aktif etmem gerekiyor mu ? hocam
    21 Temmuz 2016 Perşembe 09:39
  • hatırlamıyorum, gerekebilir, bi araştırsana

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    21 Temmuz 2016 Perşembe 10:09
    Moderatör
  • hocam dediğinizi araştırdım herşey hazır ancak Action attribute eklediğim de proje build ettiğimde şu hatayı alıyorum

    Additional information: OutputCacheAttribute for child actions only supports Duration, VaryByCustom, and VaryByParam values. Please do not set CacheProfile, Location, NoStore, SqlDependency, VaryByContentEncoding, or VaryByHeader values for child actions.

    22 Temmuz 2016 Cuma 07:43
  • OutputCache attribute'un parametrelerini aynı verdiğim örnekteki gibi yaptın mı? Duration = 3600 kısmını kaldırıp deneyebilirsin, benim verdiğim örnek ChildAction'a ait olabilir.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    22 Temmuz 2016 Cuma 08:42
    Moderatör
  •  [OutputCache(SqlDependency = "DemoConnectionString:pUrunler")]

    22 Temmuz 2016 Cuma 09:27
  • Orda yazıyor, ChildAction'lar için sqldependency kullanamazsın diyor. Html.Action ile include ettiğin actionlara(childaction) OutputCache koyma, sadece resimde gösterdiğin view'in actionuna koy. Zaten childaction ların viewleri de cache'lenmiş olacak.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    22 Temmuz 2016 Cuma 10:23
    Moderatör
  • hocam webconfig kısmı

    <caching>
          <outputCacheSettings>
            <outputCacheProfiles>
              <add name="Cache30Seconds" duration="30"
                varyByParam="none" />
            </outputCacheProfiles>
          </outputCacheSettings>
          <sqlCacheDependency enabled="true" pollTime="3000">
            <databases>
              <add name="Demo" connectionStringName="DemoConnectionString"/>
            </databases>
          </sqlCacheDependency>
        </caching>

    bu şekilde yaptıgımda cachelıyor ancak tabloda update yaptıgımda tekrar refresh yaptıgımda yenı verı gelmıyor,bir süre sonra geliyor sanırım webconfig deki değerler ile ilgili

    22 Temmuz 2016 Cuma 11:06
  • Hocam tamamdır hallettim Home/Index action koydum OutputCache sorun kalmadı :) çok çok teşekkürler
    22 Temmuz 2016 Cuma 12:05