Saya telah mencari cara untuk membuat situs saya memuat lebih cepat dan satu cara yang ingin saya jelajahi adalah memanfaatkan Cloudfront dengan lebih baik.
Karena Cloudfront pada awalnya tidak dirancang sebagai CDN asal-kustom dan karena itu tidak mendukung gzipping, sejauh ini saya menggunakannya untuk meng-host semua gambar saya, yang dirujuk oleh cname Cloudfront mereka dalam kode situs saya, dan dioptimalkan dengan jauh header masa depan.
Sebaliknya, file CSS dan javascript di-host di server saya sendiri, karena sampai sekarang saya mendapat kesan bahwa mereka tidak dapat dilayani dengan gzip dari Cloudfront, dan bahwa keuntungan dari gzip (sekitar 75 persen) lebih besar daripada dari menggunakan CDN (sekitar 50 persen): Amazon S3 (dan dengan demikian Cloudfront) tidak mendukung penyajian konten yang di-gzip dengan cara standar dengan menggunakan header HTTP-Encoding-Terima yang dikirim oleh browser untuk menunjukkan dukungan mereka untuk kompresi gzip, dan jadi mereka tidak dapat Gzip dan melayani komponen dengan cepat.
Jadi saya mendapat kesan, sampai sekarang, bahwa seseorang harus memilih antara dua alternatif:
pindahkan semua aset ke Amazon CloudFront dan lupakan tentang GZipping;
menjaga komponen di-host-sendiri dan mengonfigurasi server kami untuk mendeteksi permintaan yang masuk dan melakukan GZipping on-the-fly yang sesuai, yang merupakan apa yang saya pilih untuk dilakukan sejauh ini.
Ada yang workarounds untuk memecahkan masalah ini, tapi pada dasarnya ini tidak bekerja . [ tautan ].
Sekarang, tampaknya Amazon Cloudfront mendukung asal kustom, dan sekarang mungkin untuk menggunakan metode Pengkodean Terima HTTP standar untuk menyajikan konten yang di-gzip jika Anda menggunakan tautan Custom Origin [ link ].
Sejauh ini saya belum dapat mengimplementasikan fitur baru di server saya. Posting blog yang saya tautkan di atas, yang merupakan satu-satunya yang saya temukan yang merinci perubahannya, tampaknya menyiratkan bahwa Anda hanya dapat mengaktifkan gzipping (bilah solusi, yang tidak ingin saya gunakan), jika Anda memilih asal kustom, yang Saya lebih suka tidak: Saya merasa lebih mudah untuk meng-host fil yang merespons di server Cloudfront saya, dan menautkannya ke sana. Meskipun membaca dokumentasi dengan cermat, saya tidak tahu:
apakah fitur baru berarti file harus di-host di server domain saya sendiri melalui asal kustom, dan jika demikian, pengaturan kode apa yang akan mencapai ini;
cara mengkonfigurasi header css dan javascript untuk memastikan mereka dilayani di-gzip dari Cloudfront.
sumber
Jawaban saya adalah lepas landas untuk ini: http://blog.kenweiner.com/2009/08/serving-gzipped-javascript-files-from.html
Membangun jawaban skyler Anda dapat mengunggah versi cz dan js gzip dan non-gzip. Berhati-hatilah dalam memberi nama dan uji di Safari. Karena safari tidak akan menangani
.css.gz
atau.js.gz
file.site.js
dansite.js.jgz
dansite.css
dansite.gz.css
(Anda harus mengaturcontent-encoding
tajuk ke jenis MIME yang benar agar dapat ditayangkan dengan benar)Kemudian di halaman Anda taruh.
gzipcheck.js.jgz hanya
sr_gzipEnabled = true;
Ini menguji untuk memastikan browser dapat menangani kode gzip dan menyediakan cadangan jika mereka tidak bisa.Kemudian lakukan sesuatu yang serupa di footer dengan asumsi semua js Anda ada dalam satu file dan bisa masuk ke dalam footer.
UPDATE: Amazon sekarang mendukung kompresi gzip. Pengumuman, jadi ini tidak lagi diperlukan. Pengumuman Amazon
sumber
Cloudfront mendukung gzipping.
Cloudfront terhubung ke server Anda melalui HTTP 1.0. Secara default, beberapa server web, termasuk nginx, tidak dapat menyajikan konten yang di-gzip ke koneksi HTTP 1.0, tetapi Anda dapat melakukannya dengan menambahkan:
ke konfigurasi nginx Anda. Konfigurasi yang setara dapat ditetapkan untuk server web mana pun yang Anda gunakan.
Ini memang memiliki efek samping membuat koneksi tetap-hidup tidak berfungsi untuk koneksi HTTP 1.0, tetapi karena manfaat kompresi sangat besar, itu pasti layak diimbangi.
Diambil dari http://www.cdnplanet.com/blog/gzip-nginx-cloudfront/
Edit
Melayani konten yang di-gzip dengan cepat melalui Amazon cloud depan adalah berbahaya dan mungkin tidak boleh dilakukan. Pada dasarnya jika server web Anda gzipping konten, itu tidak akan mengatur Panjang Konten dan malah mengirim data sebagai chunked.
Jika koneksi antara Cloudfront dan server Anda terputus dan terputus sebelum waktunya, Cloudfront masih menyimpan hasil parsial dan menyajikannya sebagai versi cache hingga habis masa berlakunya.
Jawaban yang diterima dari gzipping pertama kali pada disk dan kemudian menyajikan versi gzip adalah ide yang lebih baik karena Nginx akan dapat mengatur header Panjang Konten, sehingga Cloudfront akan membuang versi terpotong.
sumber
Kami telah membuat beberapa optimisasi untuk uSwitch.com baru-baru ini untuk mengompresi beberapa aset statis di situs kami. Meskipun kami menyiapkan seluruh proxy nginx untuk melakukan ini, saya juga telah membuat aplikasi Heroku kecil yang proksi antara CloudFront dan S3 untuk memampatkan konten: http://dfl8.co
Mengingat objek S3 yang dapat diakses publik dapat diakses menggunakan struktur URL sederhana, http://dfl8.co hanya menggunakan struktur yang sama. Yaitu URL berikut ini setara:
sumber
Kemarin amazon mengumumkan fitur baru, sekarang Anda dapat mengaktifkan gzip pada distribusi Anda.
Ini bekerja dengan s3 tanpa menambahkan file .gz sendiri, saya mencoba fitur baru hari ini dan berfungsi dengan baik. (perlu membatalkan objek Anda saat ini)
Info lebih lanjut
sumber
Anda dapat mengkonfigurasi CloudFront untuk secara otomatis mengkompres file dari jenis tertentu dan melayani file yang dikompresi.
Lihat Panduan Pengembang AWS
sumber