В ASP.Net core 2+, как я могу перезаписать динамический URL? - PullRequest
0 голосов
/ 02 мая 2019

Фон

Я разрабатываю функцию изменения размера / кэширования изображений для веб-сайта - с использованием ASP.Net Core MVC 2.0

Как это должно работать

Клиент отправляетОбратитесь к /images/‹idid.jpg?height=100&width=100

  1. Получите оригинальное изображение
  2. Измените его размер до 100x100
  3. Сохраните его локально надиск, поэтому будущий запрос к тому же идентификатору / размеру подается непосредственно из локального хранилища, а не каждый раз изменяется.

Рабочий код

У меня есть этот метод на контроллере, который возвращаетлокальный образ:

[Route("(images/{id}.jpg")]
public IActionResult AwesomeImage(int id, int height, int width)
{
    //Logic to check if a resized version exists on disk, resize it etc
    //Not relevant for this question

    string webRoot = _env.ContentRootPath;

    var file = System.IO.Path.Combine(webRoot, $"resizedimage{id}.jpg");
    return File(file, "image/jpeg");
}

Кэшировать его с помощью перезаписи URL - как?

Вместо проверки локального диска в приведенном выше коде и выдачи его в виде файла, я хотел быпросто URL переписать запрос к imageid / size для фактического файла - так как это будет намного быстрее, потому что не требует никакой обработки (я полагаю).

Вопрос

Как я могув этом случае динамически добавляется перезапись URL, будущие запросы к тому же URL будутполучить локальное изображение с помощью перезаписи URL.

Будущие запросы к тому же изображению / размеру даже не затронут этот метод действия

Примерно такой псевдокод:

[Route("(images/{id}.jpg")]
public IActionResult AwesomeImage(int id, int height, int width)
{
    string webRoot = _env.ContentRootPath;
    var file = System.IO.Path.Combine(webRoot, $"resizedimage{id}.jpg");
    //Pseudocode:
    UrlRewriter($"images/{id}.jpg?height={height}&width={width}", "/resizedimage{id}.jpg")
    return File(file, "image/jpeg");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...