Как кешировать страницы с помощью redis в .net core? - PullRequest
0 голосов
/ 11 сентября 2018

Я как-то новичок в redis и знаю, что в redis легко, если вы хотите кэшировать список или объект или что-то в этом роде, но я не знаю, как я могу хранить свои веб-страницы в redis? обратите внимание, что я использую servicestack в качестве своего клиента redis и для сохранения данных с помощью стека служб в моем redis я использую такой код:

 IRedisClient redisClient = new RedisClient();
        var rc = redisClient.As<person>();
        rc.Store(new person()
        {
            Id = 1,
            Name = "foo"
        });
        rc.Store(new person()
        {
            Id = 2,
            Name = "bar"
        });
        var result = rc.GetAll();

Как я уже говорил, у меня в голове большой вопрос, что это

Как я могу кэшировать мои .html или .cshtml страницы в основном веб-приложении .net с помощью Redis?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Если вы используете ServiceStack Razor или Шаблоны ServiceStack для создания ваших просмотров, вы можете использовать атрибут [CachedResponse] для кэширования выходных ответов вашего Услуги, например:

[CacheResponse(Duration = 60)]
public class CachedServices : Service 
{ 
    public object Any(GetCustomer request) { ... }

    public object Any(GetCustomerOrders request) { ... }
}

Аннотирование вашей Службы будет кэшировать выходные ответы всех Служб, в противном случае вы можете добавить их в методы реализации службы для их кэширования adhoc, например:

public class CachedServices : Service 
{ 
    public object Any(GetCustomer request) { ... }

    [CacheResponse(Duration = 60)]
    public object Any(GetCustomerOrders request) { ... }
}
0 голосов
/ 11 сентября 2018

Промежуточное программное обеспечение для кэширования ответов использует любой настроенный распределенный кэш.Поэтому вам нужно добавить поставщика распределенного кэша Redis , а затем добавить промежуточное ПО для кэширования ответов :

services.AddDistributedRedisCache(options =>
{
    options.Configuration = "localhost";
    options.InstanceName = "SampleInstance";
});
services.AddResponseCaching();

FWIW, вам также следует изменить существующий кодиспользовать внедренный экземпляр IDistributedCache вместо непосредственной работы с RedisClient.Конечный результат будет таким же (при условии, что вы настроили Redis в качестве поставщика распределенного кэша), но вы абстрагируете реализацию от своего кода.

...