Как я могу загрузить только первый килобайт содержимого URL-адреса с помощью PowerShell? - PullRequest
1 голос
/ 06 ноября 2019

Моя главная цель - периодически опрашивать файл, размещенный у поставщика PaaS (Azure), чтобы он не остыл. Это 600K + pdf, поэтому если я опрашиваю его раз в минуту, это может генерировать значительный объем данных (более 20 ГБ) в месяц.

Два метода, которые я попробовал, оба выполняют полную загрузку данных:

  1. Invoke-WebRequest -Uri https://app.whatever.com/docs/staywarm.pdf
  2. ((New-Object Net.WebClient).DownloadString('https://app.whatever.com/staywarm.pdf'))

Я хотел бы получить только первые 1 КБ или даже только первые 100 байтов. Моя теория, что даже это должно держать этот файл в тепле.


У меня уже включено "Всегда включено". Интересно, что для начала загрузки PDF все еще часто требуется 20 секунд. Названный PDF Кстати, это Условия использования PDF, которые должны быть приняты пользователем перед входом в систему. Поэтому, когда оно должно загрузить приложение, оно должно быть уже теплым, поскольку все файлы (HTML, CSS, JS), относящиеся к странице входа, должны были быть переданы в браузер. Поэтому я подумал, что отдельные файлы, такие как этот большой PDF, могут оставаться холодными, хотя само приложение горячее?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2019

В настоящее время у меня есть этот скрипт, который я выполняю:

$wc = (New-Object Net.WebClient).OpenRead('https://app.whatever.com/docs/staywarm.pdf')
$tr = New-Object -TypeName System.IO.StreamReader -ArgumentList $wc
$tr.ReadLine()
$tr.Close()
0 голосов
/ 06 ноября 2019

Вы можете включить опцию Always On:

enter image description here

Это предотвратит отключение вашего приложения из-за неактивности


Если вы все еще хотите использовать свой путь, вы можете просто запрограммировать, чтобы ваше веб-приложение отвечало пустой строкой на определенный путь. Например: в веб-приложении .NET вы можете напрямую ответить на один результат действия OK для пути «/ check».

...