2009-01-12 49 views
6

Tôi đang cố gắng tạo một số url 'slugs' cho trang web của mình. Nó dựa trên một đoạn văn bản do người dùng tạo ra.Cách tốt nhất để lưu trữ một URL Slug duy nhất là gì?

Bây giờ, tôi đã thực hiện phương pháp sên riêng của mình, vì vậy tôi không tuân theo một số mã cho điều đó.

Tôi đang tự hỏi đâu là nơi tốt nhất để xác định nếu con sên này là duy nhất và sau đó chèn nó bởi vì trường slug là một chỉ số khóa duy nhất.

Ban đầu, tôi đã kích hoạt trên bất kỳ chèn nào (đối với bảng) để khi dữ liệu được nhập, sau đó slug được xác định. Tôi đã có một chức năng kiểm tra số lượng bản ghi chứa văn bản của người dùng (không phải là sên) và sau đó tạo ra sên và thêm số bản ghi + 1 vào cuối của sên mới.

ví dụ:

5 bản ghi được tìm thấy trong bảng có cùng nội dung do Người dùng tạo. slug cho điều này bây giờ slug-văn bản với một 6 thêm vào cuối.

Lỗi: nếu người dùng thay đổi văn bản của họ, con sên sẽ không thay đổi.

Dù sao, tôi tự hỏi liệu người khác có khắc phục vấn đề này trước đây và tìm thấy bất kỳ cách nào để khắc phục sự cố không?

Trả lời

15

Tôi giống như cách hoạt động của stackoverflow. Để đặt cả số ID và sên vào url. Bây giờ slug không còn phải là duy nhất. Tôi tin rằng hulu.com cũng làm theo cách này. Tôi nghĩ đó là một giải pháp thiết thực cho vấn đề này.

+2

@toby Stackoverflow thực sự xuất hiện chỉ sử dụng phần sên của URL cho mục đích seo (có thể có các lý do khác mà tôi không biết). Tôi nói điều này bởi vì đối với bất kỳ câu hỏi nào, URL http://stackoverflow.com/questions/434376/title-of-post và http://stackoverflow.com/questions/434376 và http://stackoverflow.com/questions/434376/total-random-gobblygoo tất cả giải quyết cho ID câu hỏi cụ thể được tham chiếu trong URL. – Howiecamp

+0

@Howiecamp, không chỉ cho SEO, có thể cho khả năng sử dụng quá ... – James

2

Hầu hết các trang web không thay đổi slug vì lý do rằng nếu người dùng chỉnh sửa tiêu đề của mình thì không được ngắt bất kỳ liên kết nào đến bài đăng đã được tạo.

0

Đối với giải pháp cơ sở dữ liệu bạn đã có, nếu nó hoạt động tốt, bạn có thể có trình kích hoạt cập nhật để cập nhật sên nếu nội dung thay đổi, nhưng bạn nên tìm kiếm hiệu suất.

Đối với giải pháp thay thế, bạn có thể sử dụng bản đồ [được tải lúc khởi động chứa các sên hiện có] có chứa khóa làm số sên và số hiện có làm giá trị. Mỗi lần bạn tạo một con sên, hãy xác định giá trị hiện tại và nối thêm giá trị cao hơn giá trị đó trong bảng và sau đó cập nhật bản đồ.

Các vấn đề liên quan