Первый вызов веб-API очень медленный C # - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть веб-приложение Asp.Net, размещенное на хостинге Godaddy для Windows.

Когда я получаю доступ к моему API с разных устройств / машин, это занимает около 30 секунд для первого запроса; после этого все работает нормально.

В чем проблема? Могу ли я заставить мой веб-API работать все время? Если так, то как? Я использовал Entity Framework Code первый подход. Каждый раз, когда я сталкиваюсь с этой проблемой, когда я вызываю API с моего сайта, который:

Rs Travels - Отправляйтесь в отпуск, нажмите на домашнюю страницу, увидите медлительность веб-API.

Можно ли как-нибудь улучшить производительность веб-API?

Ответы [ 3 ]

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

Если API используется не часто, то при первом запросе потребуется время, чтобы все было готово, то же самое, если вы перезапустите IIS в целом, вещи нужно прогреть.

Внутренне у нас естьнастраиваемая система проверки работоспособности, которая вызывает определенные URL-адреса для их мониторинга, но, как следствие, она также поддерживает работу службы.

Вы также можете сделать это довольно просто, создав задачу планировщика Windows локально или на любом сервере, который простопериодически вызывает APIЛучше всего реализовать конкретный метод Monitor, который выполняет любые другие сообщения поддержки активности, которые могут иметь отношение к делу.

Попробуйте это в качестве примера Открыть веб-сайт из планировщика Windows

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

Это сработало для меня!

https://stackoverflow.com/a/9474978/6426192

 static Thread keepAliveThread = new Thread(KeepAlive);

    protected void Application_Start()
    {
        keepAliveThread.Start();
    }

    protected void Application_End()
    {
        keepAliveThread.Abort();
    }

    static void KeepAlive()
    {
        while (true)
        {
            WebRequest req = WebRequest.Create("http://www.mywebsite.com/DummyPage.aspx");
            req.GetResponse();
            try
            {
                Thread.Sleep(60000);
            }
            catch (ThreadAbortException)
            {
                break;
            }
        }
    }
0 голосов
/ 14 сентября 2018

Было бы довольно сложно изменить его, поскольку вы не являетесь владельцем веб-сервера (и, следовательно, его пула).Вы можете попробовать вызвать API до того, как он вам понадобится (представьте заставку).Тогда он будет готов, когда он вам действительно понадобится.Конечно, это не будет работать, если сформировать начальную страницу, которую вы вызываете API ...

...