2010-06-24 2 views
0

У меня есть сайт, который загружает изображения с CDN. У меня есть требование проверить наличие 100s изображений на CDN.Быстрый способ проверить наличие изображений на удаленном сервере

Я использую этот код для достижения этой цели:

Protected Function RemoteImageExists(ByVal Path As String) As Boolean 

    Dim httpRequest As HttpWebRequest = CType(WebRequest.Create(Path), HttpWebRequest) 

    httpRequest.Method = "HEAD" 

    Try 

     Dim httpResponse As HttpWebResponse = CType(httpRequest.GetResponse, HttpWebResponse) 

    Catch ex As Exception 
     Return False 'Undesirable flow, but seems unavoidable :(
    End Try 

    Return True 

End Function 

Это по-прежнему очень медленно, и много запросов тайм-аут. Есть ли более быстрый способ сделать это?

+0

У меня есть глупый вопрос: используется ли CDN, позволяющий обслуживать динамический контент? (Если да, тем быстрее будет размещать службу на CDN, возвращая список доступных изображений). –

+0

Как часто вам нужно выполнить эту проверку? И когда/где это называется? Вы можете проверить ответы на уровень 300/400 и т. Д., Чтобы сделать его более интеллектуальным. – GalacticCowboy

+0

Я только что понял, что что-то не так - установка контрольной точки показывает, что каждый запрос занимает минуты! Что-то серьезно ввернулось! Я делаю это через admin, поэтому скорость не является огромным фактором, но текущая скорость страницы смехотворно низкая, и теперь, по-видимому, по какой-то другой причине. –

ответ

0

Несколько предложений:

  1. Если CDN может служить динамический контент, хостинг услуги на CDN, которая предоставит список изображений будет наилучшим подходом с точки зрения выступлений.

  2. Изображения того же автора? Если да, настройте CDN, чтобы отобразить список доступных файлов, и запросите этот список. Анализ HTML является уродливым, но поскольку формат этих файлов HTML не изменится неожиданно в один прекрасный день, это может быть приемлемым.

  3. Если первые два невозможно, используйте расширения Parallel в зависимости от обстоятельств (это может ускорить или замедлить работу).

  4. Исключения происходят медленно. Избавься от них. Использование сокетов напрямую может помочь (даже если оно уродливо).

Кстати, поиск узкого места может помочь найти лучшее решение. Например, если узким местом является мощность процессора, параллельные расширения могут помочь, но если это пропускная способность или производительность CDN, это просто замедлит все. Обратите внимание, что узким местом может быть локальная машина, локальное соединение, общее соединение или CDN.

+0

Нашел решение - у CDN (Rackspace) есть API, который я могу использовать для получения списка файлов. Спасибо за ваши предложения! –

Смежные вопросы