fileExists()vs CFHTTP检查远程文件

时间:2019-02-07 20:32:02

标签: coldfusion cfhttp

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 :(得分:4)

  

FileExists函数是否使用CFHTTP头?

是的,fileExists使用Commons Virtual File System,它转换为对Web资源的HTTP HEAD请求。

  

当检查远程文件是否存在时,FileExists与CFHTTP相比有什么优势?

从理论上讲,该实现可以轻松调整以适应Web资源的特定规则,而使用cfhttp将是一个具体的实现。但是,您只需要包装cfhttp即可自己轻松调整它,而不必依赖最新版本的Jakarta VFS。

  

在服务器负载方面,FileExists是否也比CFHTTP更好?

否,现在两个调用都导致HTTP HEAD请求。我无法衡量它们之间真正的性能差异。

如评论中所述,您可能不应该使用fileExists,因为:

  1. Adob​​e并未记录检查Web资源的情况,这更像是一个很好的副作用,因为该实现在下面使用了VFS。
  2. 您对实施没有任何控制。示例:如果您需要添加其他标头(因为要检查的Web服务器要求您这样做),那么fileExists会让您不走运。

所以我的建议是:编写一个使用cfhttp method="HEAD"的简洁函数,并在需要时进行调整。不要相信未记录的功能,尤其是涉及CF时。