我之前也提過這個問題,但由於我沒有得到可以解決的解決方案,我再次提出這個問題。我試圖從外部CDN服務中獲取我的CSS,比如http://cdn.example.com/
。錯誤:動態地從CDN提取css並將其回退到本地副本,如何解決?
此代碼假設檢查外部CDN上是否存在文件,如果存在,則獲取該文件,否則從本地文件夾中獲取該文件。
請幫我改正這段代碼。
function getCSSfile($filename)
{
$externalcss = EXTERNAL_CDN.'css/'.$filename.'.css';
$localcss = LOCAL_CDN.'css/'.$filename.'.css';
$ctx = stream_context_create(array(
'http' => array(
'method' => 'HEAD'
)
));
if (file_get_contents($externalcss, false, $ctx) !== false) {
echo '<link href="' . $externalcss . '" rel="stylesheet" type="text/css" media="all"/>';
} else if (file_exists($localcss)) {
echo '<link href="' . $localcss . '" rel="stylesheet" type="text/css" media="all"/>';
} else {
echo 'Error loading CSS File';
}
}
目前的代碼運行正常從外部CDN獲取副本,如果外部CDN不可用它獲取本地副本但引發以下錯誤太:
Warning: file_get_contents(http://cdn.site1.com/css/core.css): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in D:\xampp\htdocs\site2\core\core.php on line 165
和在行165這是代碼
if (file_get_contents($externalcss, false, $ctx) !== false) {
我在本地測試它並在我的XAMPP服務器上創建了一些域,因此無法共享活動鏈接。
您將**通過在每個網頁瀏覽中執行遠程'file_get_contents'來銷燬CDN的好處...此外,這不會真正檢測到CDN中斷,因爲任何良好的CDN都將世界各地都有數十個數據中心 - 您只能在這些數據中心的一個或兩個中檢測到中斷。最後,如果你需要這個,*得到一個更好的CDN,並不是一直都是!* – ceejayoz