Bagaimana cara saya mengatur domain tanpa cookie?

24

Saya telah membaca bahwa yang terbaik adalah menyajikan konten statis (css, javascript, dll.) Dari domain atau subdomain tanpa cookie untuk kinerja yang lebih baik. Saya menganggap domain tidak kurang cookie secara default. Bagaimana saya menentukan bahwa saya tidak ingin menggunakan cookie?

BenV
sumber
3
Hal semacam ini benar-benar tidak masalah kecuali Anda melayani ribuan halaman per jam, atau ribuan halaman per menit.
"Meskipun melakukan yang terbaik untuk menjaga ukuran cookie, penggunaan Google Analytics kami menempatkan ukuran cookie pengguna rata-rata sekitar 1 kilobyte." Berguna dan terkait - chrishateswriting.com/post/68794699432/small-things-add-up
mvark

Jawaban:

26

Ketika hal-hal seperti YSlow dan Page Speed memberi tahu Anda untuk mengatur domain tanpa cookie, yang sebenarnya mereka maksudkan adalah melayani media dari domain di mana Anda tidak akan menyetel apa pun, atau belum menyetel (global) di masa lalu. Kadang-kadang ini dapat dicapai dengan menggunakan sub-domain, seperti media.domain.com, atau static.domain.com, namun jika Anda menetapkan cookie domain.comyang berlaku untuk domain secara keseluruhan - cookie untuk *.domain.com- maka cookie ini akan dikirim oleh klien kembali ke server pada setiap permintaan untuk setiap domain yang terkait dengan domain.com. Ini termasuk semua sub-domain.

Cookie global menjadi masalah jika Anda memutuskan untuk tidak menggunakan www.domain Anda. Tanpa sub-domain khusus untuk mengatur cookie, semua cookie harus ditetapkan *.domain.comagar agar dapat berfungsi.

Masalah cookie global ini adalah mengapa Anda akan melihat media statis disajikan dari tempat-tempat seperti ytimg.comdi YouTube. ytimg.comtidak akan pernah menayangkan konten dinamis yang dapat mengatur cookie, yang berarti cookie tidak akan pernah dikirim dari klien kembali ke server ketika domain ini adalah bagian dari permintaan HTTP.

Jika Anda yakin bahwa Anda tidak akan pernah memiliki cookie yang ditetapkan *.domain.commaka Anda dapat menggunakan sub-domain untuk kebutuhan Anda. Perlu diketahui bahwa sebagian besar waktu jika Anda berintegrasi dengan situs atau layanan lain melalui Javascript, mereka akan mengatur cookie domain global.

Di Apache (dan saya yakin setiap server web lainnya), Anda dapat mengatur atau menghapus header sebelum permintaan dijawab. Ini tidak akan memperbaiki masalah klien yang mengirim cookie ke server Anda, tetapi itu akan membuat domain Anda tidak pernah mengirim atau mengatur cookie pada awalnya. Hanya masalah jika Anda menayangkan konten yang tidak statis dari domain tanpa cookie Anda, yang mengalahkan tujuannya.

Header unset Cookie
Header unset Set-Cookie 

Ini akan menghapus header untuk cookie yang ada dan untuk membuat cookie baru. Sekali lagi, hanya masalah jika Anda menayangkan konten dari domain statis Anda yang berpotensi dapat mengatur cookie. Tempatkan ini di konfigurasi situs atau virtualhost Anda (yang tergantung pada OS, server, dan versi Anda dapat berupa sejumlah tempat).

Bryson
sumber
"Hanya masalah jika Anda menayangkan konten yang tidak statis dari domain tanpa cookie Anda, yang mengalahkan tujuannya." - kenapa, tepatnya? Tidak ada apa pun tentang konten yang dibuat secara dinamis yang membutuhkan cookie secara inheren.
1
Saya tidak mengatakan bahwa menyajikan konten dinamis dari domain statis Anda secara bawaan mengatur apa pun. Saya mengatakan bahwa cookie akan menjadi masalah jika Anda menyajikan konten dinamis yang mengatur cookie dari domain statis Anda. Tujuan dari domain statis adalah untuk menyajikan konten yang tidak memerlukan interaksi: gambar, css, js, dll. Konten dinamis - yang merupakan tempat cookie Anda harus ditetapkan - tidak boleh ditangani oleh domain statis.
Bryson
6

Bagaimana saya menentukan bahwa saya tidak ingin menggunakan cookie?

Ini bukan tentang apa yang perlu Anda lakukan untuk memiliki domain cookie - itu lebih tentang apa yang harus Anda tidak lakukan ... Untuk memiliki domain cookie Anda harus memastikan aplikasi Anda berjalan pada domain yang tidak menetapkan cookie setiap . Ini biasanya berarti tidak memiliki login, tidak memiliki analisis google, tidak memiliki sesi - yaitu hanya melayani media dan tidak ada yang lain. Jelas ini tergantung pada pengaturan Anda.

Satu kesalahan yang saya buat baru-baru ini adalah bahwa saya tidak membuat perbedaan antara domain dan sub-domain. Saya mulai melayani semua media saya dari http://media.example.comberpikir bahwa itu adalah domain tanpa koki tetapi sebenarnya itu adalah sub- domain dan saya menemukan banyak cookie saya dari situs utama di http://www.example.commana ditetapkan pada tingkat domain dan oleh karena itu mencemari sub-domain saya yang tidak punya makanan. Berikut ini tautan untuk cara saya memecahkan masalah itu: /server/160210/nginx-serve-static-content-from-a-cookieless-domain

Tom
sumber
2
Cookie dari www.example.net tidak akan dikirim ke static.example.net, tetapi cookie dari example.netakan. Solusinya adalah dengan mengarahkan ulang example.netke www.example.net.
TRiG
3

Bagaimana saya menentukan bahwa saya tidak ingin menggunakan cookie?

Anda tidak harus menentukan bahwa Anda tidak ingin menggunakan cookie, Anda hanya tidak menggunakannya.


sumber
3
Tidak selalu menjadi pilihan. Integrasi fitur Javascript dari situs lain biasanya akan menetapkan cookie global untuk domain tersebut apakah Anda menginginkannya atau tidak.
Bryson