我試圖實現的是將我的靜態資源CSS, JS, images, uploded images
(約1百萬)同步到S3 bucket
,並使用cloudfront
發送它們。爲了進行同步,我正在使用AWS PHP SDK v2.8x。以下是我的代碼:gzipping,AWS S3,cloudfront和我的服務器同步問題
$folder = $_GET['folder'];
$concurrency = $_GET['concurrency'];
$force = $_GET['force'];
$rootPath = Yii::$app->params['root_path'];
$bucket = 'my-bucket';
$client = S3Client::factory(array(
'key' => "my-key",
'secret' => "my-secret",
'stats' => true
));
$params = array();
$metadata = array();
$options = array();
$params['ACL'] = 'public-read';
//$params['ContentEncoding'] = 'gzip';
$params['Expires'] = 'Wed, 20 Jun 2018 07:48:05 GMT';
$params['CacheControl'] = 'max-age=31536000';
$options['params'] = $params;
$options['concurrency'] = $concurrency;
//$options['debug'] = true;
$options['force'] = $force;
$client->uploadDirectory($rootPath.'/'.$folder, $bucket, $folder, $options);
我已成功將所有內容上傳到S3存儲桶並與雲端同步也正常工作。但問題是我無法gzip任何這種內容導致巨大的頁面大小。此外,過期標題也不反映在雲端。如果我啓用$params['ContentEncoding'] = 'gzip';
我得到ERR_CONTENT_DECODING_FAILED
。我也對CloudFront設置進行了更改,但似乎沒有任何效果。 另外,請幫助我同步S3,CloudFront和我的服務器的最佳做法。
我目前的php框架是YII2。
請告訴我,如果需要添加信息,我會進行編輯。
在此先感謝。
它工作。非常感謝! – sphinx
網站優化不是過期的頭文件嗎? – sphinx
我不這麼認爲。 'Expires'在RFC-7234中基本上被棄用,以支持'Cache-Control'。 [*「如果響應包含一個'Cache-Control'字段和'max-age'指令,收件人[必須]忽略Expires 字段。」*](https://tools.ietf.org/html /rfc7234#section-5.3)另請參閱https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching。 –