URL Shortener hoạt động như thế nào? [đóng cửa]


87

Tôi tự hỏi cách hoạt động của URL Shortener, chẳng hạn như cách họ trích xuất văn bản từ thanh địa chỉ và ánh xạ nó thành URL chính xác, sau đó chuyển hướng nó. Họ sử dụng ngôn ngữ lập trình nào? Làm thế nào để họ duy trì lịch sử của bản đồ? Làm cách nào để họ đảm bảo tính duy nhất của url rút gọn? Làm thế nào một người đàn ông có thể giải nén nó mà không cần truy cập vào URL?


64
chỉ có 3 phiếu bầu sát sao? Thôi nào, nó muốn học gì đó, đóng nhanh hơn !!!
IAdapter

22
Đây là câu hỏi chính xác mà tôi đã hỏi và tôi rất thất vọng khi thấy nó bị đóng. Nó không mơ hồ hoặc không đầy đủ - anh ấy rất cụ thể về những gì anh ấy đang hỏi.
thumbtackthief

3
@bmargulies Tôi nghĩ không nên đóng câu hỏi, điều này rất hữu ích và thậm chí là câu trả lời, cũng nghĩ rằng 43 lượt ủng hộ và bạn đã quyết định đóng nó..tại sao ??
Amruth A

Câu trả lời:


38

Wiki là bạn của bạn

Về cơ bản, một trang web có tên ngắn hơn được sử dụng làm nơi giữ chỗ, chẳng hạn như bit.ly.

Sau đó, bit.ly tạo một khóa để người dùng cung cấp, khóa này được tạo ngẫu nhiên để không lặp lại. Với 35 tùy chọn ký tự và 8 giá trị hoặc hơn, hãy thực hiện phép toán. Đó là rất nhiều chìa khóa khả thi. Nếu một url bằng với một khóa đã tồn tại trước đó, tôi nhớ đã đọc ở đâu đó rằng họ cũng sử dụng lại các khóa.

Họ không thực sự sử dụng một ngôn ngữ lập trình cụ thể, họ chỉ sử dụng một chuyển hướng URL đơn giản, điều này có thể được thực hiện với HTML mà tôi tin tưởng.


Oh thật tuyệt. Thank you very much
prap19

25
Chuyển hướng KHÔNG được thực hiện với HTML, nó được thực hiện với Tiêu đề HTTP. (Mã trạng thái 301 hoặc 302, tùy theo).
Yahel

À được rồi, điều đó sẽ có ý nghĩa hơn. Cảm ơn bạn đã làm rõ.
Daniel G. Wilson

Họ phải sử dụng tiêu đề Vị trí để chuyển hướng.
Jeevan Patil

25

Các trình rút gọn URL chỉ tạo một shortcode, ánh xạ URL mục tiêu với shortcode và cung cấp một URL mới. Việc truy cập URL sẽ thực hiện tra cứu cơ sở dữ liệu với shortcode làm khóa và chuyển hướng bạn đến URL đích. Không có liên kết thuật toán nào giữa URL rút gọn và URL đích, vì vậy bạn không thể "tách bản đồ" nó mà không thông qua hệ thống của trình rút gọn URL.

Bạn có thể làm điều đó với bất kỳ ngôn ngữ lập trình và kho dữ liệu nào. Việc tạo mã là không đáng kể để đảm bảo tính duy nhất; nếu bạn có một khóa số nguyên chính tăng dần, bạn có thể chỉ cần mã hóa khóa dưới dạng base62 và phục vụ điều đó. Vì các mã có tính chất gia tăng, bạn sẽ không bao giờ có xung đột.


19

Quá trình này thực sự khá đơn giản: Có một tập lệnh yêu cầu URL, tạo một chuỗi ngẫu nhiên (và xác minh rằng chuỗi này chưa được sử dụng) và đặt cả hai vào một số loại cơ sở dữ liệu. Khi bạn yêu cầu một url, một tập lệnh khác sẽ tìm chuỗi ngẫu nhiên trong cơ sở dữ liệu và nếu được tìm thấy sẽ chuyển hướng bạn đến trang web.

Điều này tất nhiên phức tạp hơn trong quá trình sản xuất do các tính năng cần thiết như ngăn chặn lạm dụng, lọc URL, ngăn chặn thư rác, xác minh URL, v.v. Nhưng chúng khá đơn giản để thực hiện.


Ngôn ngữ không liên quan, hầu hết là bất kỳ ngôn ngữ nào.


9
"và xác minh rằng chuỗi này chưa được sử dụng" .. LÀM THẾ NÀO? Đây là câu hỏi lớn nhất
Stewie

3
@Stewie: CHỌN * TỪ ánh xạ WHERE key = stringToC Kiểm tra và kiểm tra xem có hàng nào được trả về không? Hoặc bất kỳ điều gì tương tự trong ngôn ngữ cơ sở dữ liệu bạn chọn. Thành thật mà nói, có vẻ như đây là phần đơn giản nhất của toàn bộ vấn đề.
David Liu,

@Stewie Hoặc họ có thể sử dụng một HashMap để lập bản đồ<key, url>
roottraveller

@DavidLiu Người ta sẽ không cần phải tiếp tục tạo và phát hành các truy vấn cho đến khi nó không xuất ra kết quả? Khi kích thước dữ liệu của bạn tăng lên, thời gian để kiểm tra cũng tăng lên. Trong trường hợp xấu nhất, số lượng truy vấn tới DB của bạn sẽ là n-1 trong đó n là số "chuỗi"; điều gì xảy ra khi bạn có 100M chuỗi?
Stewie

@Stewie Đó là một câu hỏi hoàn toàn khác, một vấn đề với nguyên tắc của giải pháp. Bạn nói đúng rằng vấn đề tái tạo cuối cùng sẽ trở thành một vấn đề, nhưng một lần nữa, đó là lý do tại sao tôi nói "xác minh chuỗi chưa được sử dụng" là một phần dễ dàng của giải pháp. Có rất nhiều giải pháp thay thế để thực hiện ngẫu nhiên mà không cần thay thế.
David Liu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.