Bagaimana cara kerja layanan seperti TinyURL atau Metamark ?
Apakah mereka hanya mengaitkan kunci URL kecil dengan halaman web [virtual?] Yang hanya menyediakan "pengalihan HTTP" ke URL asli? atau apakah ada lebih banyak "keajaiban" di dalamnya?
[Kata-kata asli] Saya sering menggunakan layanan pemendek URL seperti TinyURL, Metamark, dan lainnya, tetapi setiap kali saya melakukannya, saya bertanya-tanya bagaimana layanan ini bekerja. Apakah mereka membuat file baru yang akan dialihkan ke halaman lain atau apakah mereka menggunakan subdomain?
web-services
url
url-shortener
bit.ly
short-url
Nathan Campos
sumber
sumber
Jawaban:
Tidak, mereka tidak menggunakan file. Ketika Anda mengklik tautan seperti itu, permintaan HTTP dikirim ke server mereka dengan URL lengkap, seperti http://bit.ly/duSk8wK (tautan ke pertanyaan ini). Mereka membaca bagian jalur (di sini
duSk8wK
), yang memetakan ke database mereka. Di database, mereka menemukan deskripsi (terkadang), nama Anda (terkadang), dan URL asli. Kemudian mereka mengeluarkan pengalihan, yang merupakan respons HTTP 302 dan URL target di header.Pengalihan langsung ini penting. Jika Anda menggunakan file atau memuat HTML terlebih dahulu lalu mengarahkan ulang, browser akan menambahkan TinyUrl ke histori, yang bukan itu yang Anda inginkan. Selain itu, situs yang dialihkan akan melihat pengarah (situs asal Anda) sebagai situs tempat tautan TinyUrl berada (yaitu, twitter.com, situs Anda sendiri, di mana pun tautannya). Ini sama pentingnya, sehingga pemilik situs dapat melihat dari mana orang-orang berasal. Ini juga, tidak akan berfungsi jika halaman yang memuat pengalihan.
PS: ada lebih banyak jenis pengalihan. HTTP 301 artinya: redirect permanen. Jika itu terjadi, browser tidak akan meminta situs bit.ly atau TinyUrl lagi dan situs-situs tersebut ingin menghitung klik. Itulah mengapa HTTP 302 digunakan, yang merupakan pengalihan sementara. Browser akan meminta TinyUrl.com atau bit.ly setiap kali lagi, yang memungkinkan untuk menghitung hit untuk Anda (beberapa layanan url kecil menawarkan ini).
sumber
Moved
bukanMoved Permanently
. Ini adalah perbedaan yang halus. Dengan menambahkan stempel waktu, browser menganggapnya harus memeriksa apakah sumber daya berubah atau tidak saat waktu tunggu ini tercapai. Lainnya, seperti is.gd, menggunakan normal301 Moved Permanently
dan browser tidak perlu memeriksa ulang (tetapi sering kali). Terakhir, layanan seperti url4.eu tidak mengalihkan sama sekali, tetapi menampilkan iklan terlebih dahulu. Dengan 301 layanan masih dapat menghitung pengunjung unik , tetapi tidak semua klik.Orang lain telah menjawab cara kerja pengalihan, tetapi Anda juga harus tahu bagaimana mereka menghasilkan url kecil mereka. Anda akan keliru mendengar bahwa mereka membuat hash dari URL untuk menghasilkan kode unik untuk URL yang dipersingkat. Ini tidak benar dalam banyak kasus, mereka tidak menggunakan algoritme hashing (di mana Anda berpotensi mengalami benturan).
Sebagian besar layanan pemendekan URL yang populer cukup mengambil ID dalam database URL dan kemudian mengubahnya menjadi Base 36 [a-z0-9] (case insensitive) atau Base 62 (case sensitive).
Contoh sederhana dari Tabel Database TinyURL:
Kerangka Web yang memungkinkan perutean fleksibel membuat penanganan URL masuk menjadi sangat mudah (Ruby, ASP.NET MVC, dll).
Jadi, di server web Anda, Anda mungkin memiliki tindakan rute yang terlihat seperti (kode pseudo):
Yang merutekan permintaan apa pun yang masuk ke server Anda yang memiliki teks apa pun setelah domain Anda www.mytinyurl.com ke metode terkait Anda, RouteURL. Ini memasok teks yang diteruskan setelah garis miring di URL Anda ke metode itu.
Jadi, katakanlah Anda meminta: www.mytinyurl.com/fif
"fif" kemudian akan diteruskan ke metode Anda, RouteURL (String UrlID). RouteURL kemudian akan mengubah "fif" menjadi base10 yang setara, 20103, dan permintaan database akan dibuat untuk mengarahkan ke URL apa pun yang disimpan di bawah ID 20103 (dalam hal ini, www.digg.com). Anda juga dapat meningkatkan jumlah kunjungan untuk Digg satu per satu sebelum mengarahkan ke URL yang benar.
Ini adalah contoh yang sangat sederhana tetapi Anda harus bisa mendapatkan gambaran umumnya.
sumber
O(1)
pencarian guna menemukan duplikat; dan kemudian arahkan URL kecil yang ada untuk itu, atau dapat memilih untuk membuat yang baru. Sejauh yang saya tahu,goo.gl
menggunakan kembali url kecil untuk URL yang sama; coba ini di akhir Anda untuk halaman ini: Apakah Anda mengerti ini >>goo.gl/8gVb8X
?Sebagai perpanjangan dari jawaban @A Salcedo:
Beberapa layanan pemendekan url (Tinyarro.ws) menjadi ekstrim dengan menggunakan Unicode (UTF-8) untuk menyandikan karakter dalam url yang dipersingkat - yang memungkinkan jumlah situs web yang lebih tinggi sebelum harus menambahkan simbol tambahan. Karena sebagian besar UTF-8 diterima untuk digunakan ( (IRI) RFC 3987 ditangani oleh sebagian besar browser ) yang berpindah dari
62
situs per simbol ke ~1,112,064
.Sebagai gambaran, seseorang dapat menyandikan 1.2366863e + 12 situs dengan 2 simbol (
1,112,064*1,112,064
) - pada November 2009, tautan yang diperpendekbit.ly
diakses2.1
miliaran kali ( Sekitar waktu itu, bit.ly dan TinyURL adalah layanan pemendek URL yang paling banyak digunakan. ) yang ~ 600 kali lebih sedikit daripada yang dapat Anda muat hanya dalam 2 simbol, jadi untuk durasi penuh dari semua layanan pemendekan url, itu harus bertahan minimal 20 tahun lagi hingga menambahkan simbol ketiga.sumber
Dengan kata sederhana, penyingkat URL memetakan urutan karakter yang panjang (asli, url panjang yang jelek) menjadi urutan karakter yang pendek dan apik. Ini tidak lain adalah Hashing, yang paling umum digunakan untuk membuat tabel pencarian, HashMap, Hash md5 untuk tujuan kriptografi, dll.
Untuk memahami proses URL-Shortening, saya telah membuat proyek demo di GitHub dan juga posting blog. Silakan merujuk ke ini dan beri tahu saya jika itu membantu.
Entri Blog: Mempersingkat URL
sumber