Jika Anda akan menyimpan agen pengguna dalam database, seberapa besar Anda akan mengabari?
Saya menemukan artikel technet ini yang merekomendasikan menjaga UA di bawah 200. Tidak terlihat seperti ini didefinisikan dalam spesifikasi HTTP setidaknya tidak yang saya temukan. UA saya sudah 149 karakter, dan sepertinya setiap versi .NET akan menambahkannya.
Saya tahu saya dapat mengurai string dan memecahnya tetapi saya lebih suka tidak.
EDIT
Berdasarkan Blog ini IE9 akan berubah untuk mengirim string UA pendek. Ini adalah perubahan yang bagus.
http
database-design
http-headers
user-agent
JoshBerke
sumber
sumber
Jawaban:
Spesifikasi HTTP tidak membatasi panjang header sama sekali. Namun server web membatasi ukuran tajuk yang mereka terima, melempar
413 Entity Too Large
jika melebihi.Tergantung pada web-server dan pengaturannya batas ini bervariasi dari 4KB hingga 64KB (total untuk semua header).
sumber
Pandangan saya tentang ini:
UNIQUE BINARY(32)
(atau 64, atau 128 tergantung pada panjang hash Anda) dan hash UserAgentBeberapa string UA bisa menjadi sangat panjang. Ini akan membuat Anda khawatir. Juga menegakkan panjang maksimum di INSERTer Anda untuk menjaga string UA di bawah 4KB. Kecuali seseorang mengirim email kepada Anda di agen-pengguna, itu tidak boleh melebihi itu.
sumber
Melihat sesuatu seperti ini di log apache kami. Kelihatannya tidak normal bagi saya tetapi saya secara teratur melihat hal-hal seperti itu dalam log kebanyakan dari sistem Windows.
sumber
642
angka. Empat angka pertama selalu6
,7
,8
, atau9
. Angka kelima selalu0
. Tiga terakhir selalu603
,703
,803
, atau903
. Mungkin seseorang mungkin mengenali pola itu? (Paruh 3 dikonfirmasi?)Karena ini untuk keperluan basis data dan tidak ada batasan praktis saya akan pergi untuk Tabel UserAgents dengan UserAgentId sebagai Int dan UserAgentString sebagai NVarChar (MAX) dan menggunakan kunci asing pada tabel asli.
sumber
Bagaimana ini untuk besar ?:
sumber
Tidak ada batasan yang dinyatakan, hanya batas sebagian besar server HTTP. Dengan mengingat hal itu, saya akan mengimplementasikan kolom dengan panjang tetap yang masuk akal (gunakan Google untuk menemukan daftar agen pengguna yang dikenal, temukan yang terbesar dan tambahkan 50%), dan potong saja agen pengguna yang terlalu panjang - kecuali agen pengguna yang panjang mungkin cukup unik bahkan ketika dipotong, atau merupakan hasil dari beberapa jenis bug atau upaya "retas".
sumber
Saya mendapatkan agen pengguna ini hari ini, memenuhi bidang penyimpanan vendor kami:
Konyol! 229 karakter?
Jadi, ambil ukuran itu, gandakan, gandakan lagi, dan Anda harus mengaturnya sampai kesalahan Microsoft berikutnya (mungkin kali ini tahun depan).
Lebih besar dari 1000!
sumber
Saya akan memberi Anda jawaban standar:
Ambil nilai terbesar yang bisa Anda bayangkan, gandakan, dan itulah jawaban Anda.
sumber
Anggap string agen pengguna tidak memiliki batasan panjangnya dan bersiaplah untuk menyimpan nilai seperti itu. Seperti yang Anda lihat, panjang tidak dapat diprediksi.
Di Postgres, ada jenis teks yang menerima string dengan panjang tak terbatas. Gunakan itu.
Kemungkinan besar, Anda harus mulai memotong pada beberapa titik. Sebut itu bagus dengan peningkatan yang cukup berguna (200, 1k, 4k) dan buang sisanya.
sumber
Inilah salah satu yang 257
sumber
Bukan indikasi seberapa besar agen pengguna bisa, karena ada banyak jawaban yang menunjukkan kasus tepi yang mereka temui, tetapi yang terpanjang yang bisa ditemukan di http://www.useragentstring.com/pages/useragentstring.php? name = Semua adalah 250 byte.
sumber