Как в C# достать контент из кэша?

178
07 мая 2017, 22:36

Здравствуйте! Я новичок по c#, но хорошо знаю java.

Вопрос который сейчас я задаю должен быть очень лёгким: как кэшировать и достать от кэша?

Например, когда обращаешься по какому-то адресу интернета сначала искать в кэше, если в кэше нету, то тогда достал этот контент из интернета и поставить в кэш

Если вы знаете C# и Java, внизу я привёл код на Java
На этот вопрос можно ответить и не зная Java.

Main.java

import org.apache.commons.io.IOUtils; 
import java.io.IOException; 
import java.io.InputStream; 
import java.net.*; 
import java.util.List; 
import java.util.Map; 
public class Main { 
    public static void main(String[] args) throws Exception { 
        ResponseCache.setDefault(new ResponseCache() { 
            @Override 
            public CacheResponse get(URI uri, String rqstMethod,
                        Map<String, List<String>> rqstHeaders) throws IOException { 
                if (uri.toString().equals("http://google.com/")) { 
                    return new CacheResponse() { 
                        @Override 
                        public Map<String, List<String>> getHeaders() throws IOException { 
                            return null; 
                        } 
                        @Override 
                        public InputStream getBody() throws IOException { 
                            return null; 
                        } 
                    }; 
                } 
                return null; 
            } 
            @Override 
            public CacheRequest put(URI uri, URLConnection conn) throws IOException { 
                return null; 
            } 
        }); 
        URLConnection c = new URL("http://google.com/").openConnection(); 
        c.setUseCaches(true); 
        String html = IOUtils.toString(c.getInputStream()); 
        System.out.println(html); 
    } 
}

Приведите, пожалуйста, пример кода на С# по аналогии моего кода.

Answer 1

Пусть Response GetWebResponseFromUrl(string url) - некоторый метод (который вы напишите самостоятельно) для получения Web-контента, тогда ответ на ваш вопрос выглядит примерно так:

Dictionary<string, Response> ResponseCache = new Dictionary<string, Response>();
Response GetWebResponse(string url)
{
    if (!ResponseCache.ContainsKey(url))
        ResponseCache[url] = GetWebResponseFromUrl(url);
    return ResponseCache[url];
}
READ ALSO
Как ускорить получение данных с API?

Как ускорить получение данных с API?

Теперь мне нужно пройтись по каждой записи с этих 19000, получить значение этой записи и после определить максимальное значение из этих 19000API...

248
Как подружить PHP и Sqldeveloper

Как подружить PHP и Sqldeveloper

Есть база данных на SqldeveloperУ меня есть задача создать кое-какой вебсервис

215
Правка документов онлайн

Правка документов онлайн

Добрый день! Такая задачаЗаказчик хочет загружать бланки документов на сайт (там вордпресс стоит) так, чтобы пользователи могли их заполнять...

232
Оптимальное построение таблицы бд

Оптимальное построение таблицы бд

Всем приветДоделываю свой интернет-магазин

237