Saya menggunakan plug-in "Kecepatan Halaman" Google untuk Firefox untuk mengakses situs web saya.
Beberapa komponen pada halaman saya diindikasikan sebagai status HTTP:
200 200 (cache) 304
Oleh "Kecepatan Halaman" Google.
Yang saya bingung adalah perbedaan antara 200 (cache) dan 304.
Saya telah me-refresh halaman beberapa kali (tetapi belum membersihkan cache saya) dan selalu tampak bahwa favicon.ico saya dan beberapa gambar berstatus = 200 (cache) sementara beberapa gambar lainnya adalah http status 304.
Saya tidak mengerti mengapa bedanya.
MEMPERBARUI :
Menggunakan Google "Kecepatan Halaman", saya menerima "200 (cache)" untuk http://example.com/favicon.ico dan juga http://cdn.example.com/js/ga.js
Tapi, saya menerima status http "304" untuk http://cdn.example.com/js/combined.min.js
Saya tidak mengerti mengapa saya memiliki dua file JavaScript yang terletak di direktori yang sama / js /, satu mengembalikan status http 304 dan yang lainnya mengembalikan kode status 200 (cache).
max-age
danage
header gabungan juga dapat mengakibatkan 200 (cache) hasil jikaage
kurang darimax-age
. Satu-satunya pengecualian adalah ketika pengguna mengklik tombol refresh browser, dalam hal ini header 304 dikirim.href
,url,
dansrc
referensi ke setiap file untuk menyertakan 'sidik jari' (baik hash file atau angka sederhana yang ditingkatkan), dan kemudian beri tahu server untuk menghilangkan sidik jari itu dan hanya melayanistyle.css
atau apa pun. Jika Anda tidak dapat melakukannya di server, minta sistem build Anda mengganti nama file aktual dengan sidik jari.200 (cache) berarti Firefox hanya menggunakan versi yang di-cache secara lokal. Ini adalah yang tercepat karena tidak ada permintaan ke server Web dibuat.
304 berarti Firefox mengirim permintaan bersyarat "Jika-Dimodifikasi-Sejak" ke server Web. Jika file belum diperbarui sejak tanggal dikirim oleh browser, server Web mengembalikan respons 304 yang pada dasarnya memberitahu Firefox untuk menggunakan versi yang di-cache. Ini tidak secepat 200 (cache) karena permintaan masih dikirim ke server Web, tetapi server tidak harus mengirim konten file.
Untuk pertanyaan terakhir Anda, saya tidak tahu mengapa kedua file JavaScript di direktori yang sama menghasilkan hasil yang berbeda.
sumber
Ini melempar saya untuk waktu yang lama juga. Hal pertama yang saya verifikasi adalah Anda tidak memuat ulang halaman dengan mengklik tombol refresh, yang akan selalu mengeluarkan permintaan bersyarat untuk sumber daya dan akan mengembalikan 304 untuk banyak elemen halaman. Alih-alih pergi ke bilah url pilih halaman dan tekan enter seolah-olah Anda baru saja mengetikkan URL yang sama, yang akan memberi Anda indikator yang lebih baik tentang apa yang sedang di-cache dengan benar. Artikel ini melakukan pekerjaan yang hebat menjelaskan perbedaan antara permintaan bersyarat dan tanpa syarat dan bagaimana tombol refresh mempengaruhi mereka: http://blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about- conditional-http-request-and-the-refresh-button.aspx
sumber
HTTP 304 "tidak dimodifikasi". Server web Anda pada dasarnya memberi tahu peramban "file ini belum berubah sejak terakhir kali Anda memintanya." Sedangkan HTTP 200 memberi tahu browser "ini adalah respons yang berhasil" - yang harus dikembalikan ketika pertama kali browser Anda mengakses file atau saat pertama kali salinan yang dimodifikasi diakses.
Untuk info lebih lanjut tentang kode status, periksa http://en.wikipedia.org/wiki/List_of_HTTP_status_codes .
sumber
Untuk pertanyaan terakhir Anda, mengapa? Saya akan mencoba menjelaskan dengan apa yang saya ketahui
Penjelasan singkat tentang ketiga kode status dalam istilah awam.
Jika caching diaktifkan di server
Untuk beberapa file browser memutuskan untuk meminta dari server dan untuk beberapa file memutuskan untuk membaca dari file yang disimpan (di-cache). Kenapa ini ? Setiap file memiliki tanggal kedaluwarsa, jadi
Jika file tidak kedaluwarsa maka browser akan menggunakan dari cache (200 cache).
Jika file kedaluwarsa, browser meminta server untuk file tersebut. Server memeriksa file di kedua tempat (browser dan server). Jika file yang sama ditemukan, server menolak permintaan tersebut. Sesuai protokol, browser menggunakan file yang ada.
lihat konfigurasi nginx ini
Di sini kedaluwarsa diatur ke 60 detik, sehingga semua file statis di-cache selama 60 detik. Jadi jika Anda meminta file lagi dalam 60 detik browser akan membaca dari memori (200 memori). Jika Anda meminta setelah 60 detik, browser akan meminta server (304).
Saya berasumsi bahwa file tidak berubah setelah 60 detik, dalam hal ini Anda akan mendapatkan 200 (yaitu, file yang diperbarui akan diambil dari server).
Jadi, jika server dikonfigurasi dengan header (kebijakan) kedaluwarsa dan caching yang berbeda, statusnya mungkin berbeda.
Jika Anda menggunakan cdn, tujuan utama cdn adalah ketersediaan tinggi dan pengiriman cepat. Karena itu mereka menggunakan banyak server. Meskipun sepertinya file berada di direktori yang sama, cdn mungkin menggunakan beberapa server untuk menyediakan konten Anda, jika server tersebut memiliki konfigurasi yang berbeda. Maka status ini dapat berubah. Semoga ini bisa membantu.
sumber