Выходной кэш для многопользовательского приложения, варьирующегося именем хоста и культурой

Вы можете использовать видимую область проекции и цель камеры, чтобы достичь желаемого:

cameraTarget = map.cameraPosition.target
when (viewPort?.contains(cameraTarget)) {
    true -> {
        // Did not scroll more than half (camera center still inside initial bounds)
    }
    false -> {
        // Scrolled more than half (camera center outside initial bounds)
    }
}
viewPort = map.projection.visibleRegion.latLngBounds
23
задан Michael 3 May 2017 в 20:11
поделиться

2 ответа

[

] - я только что понял, как этого добиться.[

] [

] - просто используйте свойство []VaryByHeader[], установленное на [] "host"[]. Есть много возможностей сделать это.[

] [

]Метод 1[

] [

]Используйте []OutputCacheAttribute[], передавая все необходимые элементы конфигурации, включая []VaryByHeader[]:[

] [
public class HomeController : Controller
{  
    [OutputCache(Duration = 3600, VaryByParam = "none", VaryByHeader = "host")]
    public ActionResult Index() { /* ... */ }
}
] [

]Метод 2. [

] [

]Или вы можете установить его в профиль в Web.config:[

] [
<?xml version="1.0"?>
<configuration>
  <!-- ... -->
  <system.web>
    <!-- ... -->
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <clear/>
          <add name="Multitenant" 
               enabled="true"
               duration="3600"
               varyByHeader="host"
               varyByParam="none"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
  </system.web>
</configuration>
] [

]Затем использовать:[

] [
public class HomeController : Controller
{  
    [OutputCache(CacheProfile = "Multitenant")]
    public ActionResult Index() { /* ... */ }
}
] [

]Метод 3.[

] [

]Или вы можете подразделить []OutputCacheAttribute[] и использовать:[

] [
public sealed class MultitenantOutputCacheAttribute : OutputCacheAttribute
{
    public MultitenantOutputCacheAttribute()
    {
        VaryByHeader = "host";
        VaryByParam = "none";
        Duration = 3600;
    }
}
] [

]Затем использовать:[

] [
public class HomeController : Controller
{  
    [MultitenantOutputCache]
    public ActionResult Index() { /* ... */ }
}
]
57
ответ дан 29 November 2019 в 01:18
поделиться

В случае, если люди попадают на эту страницу и ищут эквивалент в asp.net 2.x. Атрибут будет выглядеть так:

[ResponseCache(Duration = 30, Location = ResponseCacheLocation.Any, VaryByHeader = "host", VaryByQueryKeys = new string[] { "*" })]

И вам понадобится промежуточное программное обеспечение. Вам нужен этот пакет Nuget и этот код:

public void ConfigureServices(IServiceCollection services)
{
    //stuff before...

    services.AddResponseCaching();
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    //stuff after...
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //stuff before...

    app.UseResponseCaching();

    //stuff after...
}

Подробнее здесь

0
ответ дан 29 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: