Дайте стабильное имя кэшированному прокси-клиенту Flurl 4
Используйте кэш клиентов Flurl, чтобы сохранять отдельные конфигурации прокси, не применяя случайный выбор маршрута повторно при построении запроса.
var client = clients.GetOrAdd(
"proxy-east",
"https://example.com",
builder => builder.ConfigureInnerHandler(handler =>
handler.Proxy = new WebProxy("http://203.0.113.10:8080")));
Здесь clients — это IFlurlClientCache из Flurl 4. Выберите маршрут до поиска и дайте его переиспользуемому клиенту стабильное имя. Для разрешённых публичных запросов список HTTP-прокси предлагает кандидатов для URL WebProxy внутреннего handler. Повторное использование proxy-east с новым значением прокси — это не переконфигурация уже сохранённого там клиента для каждого запроса.
Используйте API handler, соответствующий выбранному приложением типу; Flurl документирует другой путь конфигурации для SocketsHttpHandler.
Храните выбранный маршрут в метаданных операции и вызывайте через соответствующий ему клиент. Случайный выбор при каждом обращении к factory иначе может дать одной логической задаче несогласованные политики.
Владейте кэшем в рамках области приложения и ограничивайте его рост. Меняющийся временный список прокси может накапливать клиентов и ресурсы; используйте безопасные идентификаторы маршрутов для имён и логов вместо встроенных паролей.
Здесь используется интерфейс именованного кэша Flurl 4 вместо копирования старой собственной инфраструктуры factory или изменения используемого handler во время другого запроса.