2010-07-19 49 views
0

我正在構建一個簡單的API,用於從第三方CDN(雲文件)下載文件。 ColdFusion目前正在成功獲取此文件,並且使用CfContent和cfheader可以下載該文件並調用該API。ColdFusion CDN下載

我遇到的問題是這些文件是安全的文件,所以我不能使用直接鏈接到CDN,這些文件的範圍可以從50MB到5GB。如此,因爲這兩個問題,當我使用CFHTTP從CDN該文件,然後執行此

<cfcontent type="MMIETYPE" variable="#CFHTTP.FileContent#" > 

林弄得好像ColdFusion不像箇中間服務器裏其獲得從位文件CDN並將其傳遞給用戶,或者是將整個文件下載到內存中,然後將其傳輸給用戶。

如果它做了後者,那我該如何讓它充當中間服務器呢?

+1

從CDN通過您的服務器拉文件非常失敗的CDN點。在這一點上,獲得足夠的本地存儲直接從驅動器發送它們會更容易,更快速並且(可能)更便宜。 @Tyler Christianson是對的:如果您使用的是CDN,請正確使用它。 – 2010-07-19 13:40:59

回答

3

使用cfhttp下載文件。在沒有下載文件並將其重新提供給最終用戶的情況下,隱藏CDN的URI沒有太多的依據。

如果您使用HTTP 301或302狀態碼,大多數最終用戶將無法分辨文件的位置。

301是永久重定向,302是臨時重定向。區別在於某些瀏覽器緩存了301,這樣如果用戶第二次請求URI,用戶不必再次擊中服務器。

爲此,您可以簡單地

<cfheader statuscode="301" statustext="Moved permanently" /> 
<cfheader name="Location" value="#CDN_URI#" /> 
<cfabort /> 

<cfheader statuscode="302" statustext="Moved Temporarily" /> 
<cfheader name="Location" value="#CDN_URI#" /> 
<cfabort /> 

您還可以使用cflocation,默認情況下使用302,但可以由使用的StatusCode屬性使用另一個狀態碼。

http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_j-l_04.html

+0

此外,使用CFHTTP將文件下載到您的CF服務器,然後使用CFContent將其流式傳回給用戶,以便在下載期間綁定一個線程,ColdFusion將使用該線程處理請求。如果您的網站遇到高負載,您可能會用盡線程。 – 2010-07-19 12:36:44

+0

我只是使用CFLOCATION,而不是自己寫頭。更簡單,代碼更少,可讀性更強,結果相同。 – 2010-07-19 13:41:45

+0

是的,我其實已經遇到線程不足的問題。 – 2010-07-19 16:36:39