fileExists () против CFHTTP проверка удаленных файлов - PullRequest
0 голосов
/ 07 февраля 2019

Используется ли для удаленной проверки файлов fileExists заголовок cfhttp?

Меня беспокоит скорость fileExists через CFHTTP при проверке удаленных файлов

<cfset imgExist = FileExists('https://qph.fs.quoracdn.net/main-qimg-e8b07145ae25974d4902168818241326.webp') >
<cfdump var="#imgExist#">
-- Returns Yes --

Функция FileExists использует заголовок CFHTTP?

<cfhttp method="head" url="someimage" resolveurl="no" throwonerror="no" timeout="2" />

В чем преимущество FileExists перед CFHTTP при проверке существования удаленного файла?

Также FileExists лучше, чем CFHTTP, с точки зрения загрузки сервера?

1 Ответ

0 голосов
/ 08 февраля 2019

Использует ли функция FileExists заголовок CFHTTP?

Да, fileExists использует виртуальную файловую систему Commons , которая преобразуется в запрос HTTP HEAD для веб-сайтаresources.

В чем преимущество FileExists перед CFHTTP при проверке существования удаленного файла?

Теоретически реализация может легко адаптироваться к определенным правилам для веб-ресурсов, в то время какиспользование cfhttp было бы конкретной реализацией.Однако вы можете просто обернуть cfhttp, чтобы легко настроить его самостоятельно, вместо того, чтобы полагаться на новейшую версию Jakarta VFS.

Также FileExists лучше, чем CFHTTP, с точки зрения загрузки сервера?

Нет, сейчас оба вызова приводят к запросу HTTP HEAD.Я не мог измерить реальную разницу в производительности между ними.

Как уже упоминалось в комментариях, вам, вероятно, НЕ следует использовать fileExists, потому что:

  1. Проверка веб-ресурсов не задокументированаAdobe, это больше похоже на приятный побочный эффект, потому что реализация использует VFS ниже.
  2. У вас нет никакого контроля над реализацией.Пример: Если вам когда-либо понадобится добавить дополнительный заголовок (поскольку проверяемый веб-сервер требует от вас этого), вам не повезет с fileExists.

Поэтому я рекомендую: Напишите аккуратную функцию, которая использует cfhttp method="HEAD", и настройте ее, когда вам нужно.Не доверяйте недокументированной функции, особенно если речь идет о CF.?

...