Menurut spesifikasi DNS panjang maksimum nama domain adalah :
255 * 3 =765 <767 (Hampir saja :-) )
Namun perhatikan bahwa setiap komponen hanya dapat terdiri dari 63 karakter.
Jadi saya sarankan memotong url ke dalam bit komponen.
Menggunakan http://foo. example.com/a/really/long/path?with=lots&of=query¶meters=that&goes=on&forever&and=ever
Mungkin ini cukup:
- bendera protokol ["http" -> 0 ] ( simpan "http" sebagai 0, "https" sebagai 1, dll. )
- subdomain ["foo" ] ( 255 - 63 =192 karakter :Saya dapat mengurangi 2 lagi karena min tld adalah 2 karakter )
- domain ["contoh"], ( 63 karakter )
- tld ["com"] ( 4 karakter untuk menangani "info" tld )
- path [ "a/really/long/path" ] ( selama yang Anda inginkan -simpan di tabel terpisah )
- parameter kueri ["with=lots&of=query¶meters=that&goes=on&forever&and=ever" ] ( simpan di tabel kunci/nilai terpisah )
- portnumber / otentikasi hal-hal yang jarang digunakan dapat berada di tabel dengan kunci terpisah jika benar-benar dibutuhkan.
Ini memberi Anda beberapa keuntungan bagus:
- Indeks hanya pada bagian url yang perlu Anda cari (indeks lebih kecil! )
- kueri dapat dibatasi ke berbagai bagian url (misalnya temukan setiap url di domain facebook)
- url apa pun yang memiliki subdomain/domain terlalu panjang adalah palsu
- mudah membuang parameter kueri.
- pencarian nama domain yang tidak peka huruf besar/kecil mudah dilakukan
- buang gula sintaks ( "://" setelah protokol, "." antara subdomain/domain, domain/tld, "/" antara tld dan jalur, "?" sebelum kueri, "&" "=" di permintaan)
- Menghindari masalah tabel sparse yang utama. Sebagian besar url tidak akan memiliki parameter kueri, atau jalur panjang. Jika bidang ini berada di tabel terpisah maka tabel utama Anda tidak akan menerima ukuran. Saat melakukan kueri, lebih banyak catatan akan masuk ke dalam memori, sehingga kinerja kueri lebih cepat.
- (lebih banyak keuntungan di sini).