Nội dung bài viết
La Kiến Vinh Bài viết hướng dẫn bạn hiểu và tối ưu đường dẫn các bài viết hay danh mục sản phẩm trong website bạn theo hướng tiếp cận thủ công, áp dụng được cho tất cả nền tảng bao gồm PHP, ASP.NET, JSP Servlet. Kỹ thuật cũng có thể hỗ trợ lớn cho mục đích quảng bá, trong vấn đề tạo ra một website tốt có rất nhiều khía cạnh để quan tâm như bề ngoài, xử lý tốt, dữ liệu lưu trữ tốt, tốc độ lướt web nhanh. Đó là hướng sản phẩm, ở hướng bán hàng hay marketing, ta sẽ tập trung chú trọng bề ngoài và trải nghiệm người dùng.

Giới thiệu

Đối với website cơ bản, nói về kỹ thuật, có thể nó sẽ không quá khó với việc phát triển với công nghệ hiện tại. Ở một thế giới khác của kỹ thuật, người ta còn đòi hỏi phải tăng được khả năng quảng bá nhiều nhất có thể cho những gì họ làm ra như định hướng, quảng bá, thương hiệu, trải nghiệm người dùng.

Ta thử xét 2 đường dẫn sau:

  • http://www.stdio.vn/articles/read/282
  • http://www.stdio.vn/articles/read/282/dien-tu-co-ban-voi-arduino-led-7-doan

Với trải nghiệm của bạn, bạn có thể có nhiều thông tin hơn với đường dẫn thứ 2. Trong bài viết này chủ yếu đề cập đến vấn đề tối ưu hóa đường dẫn nhằm tối ưu trải nghiệm người dùng với website bạn.

Bài này không đề cập đến kỹ thuật tạo ra nó mà chỉ bàn về giải pháp, bạn có thể dùng bất kỳ cách gì để hiện thực.

Tiền đề bài viết

Môi trường làm việc của tôi thiên về chuyên sâu, nhưng bản thân tôi lại có kinh nghiệm làm web lâu dài, với nhận thấy được nhiều đồng nghiệp xung quanh đôi khi muốn tự tay làm ra các hệ thống website cá nhân, tôi thấy cần đưa thêm cho họ một số công cụ về trải nghiệm người dùng nên tôi viết bài này.

Đối tượng hướng đến

Dành cho những người đồng nghiệp của tôi và cho các bạn đã có kinh nghiệm làm web về mặt kỹ thuật (các bạn có thể tham khảo bài viết này để nâng cao trải nghiệm người dùng).

Tối ưu hóa đường dẫn web là gì và tầm quan trọng?

Trải nghiệm người dùng

  1. http://www.stdio.vn/articles/read/282
  2. http://www.stdio.vn/articles/read/282/dien-tu-co-ban-voi-arduino-led-7-doan

Ta nhận xét thấy đường dẫn thứ nhất không chứa nhiều thông tin như đường dẫn thứ 2. Đặt bản thân vào trường hợp người sử dụng cuối đang tìm kiếm một giải pháp, sản phẩm mà ta đang có và họ lại tiếp cận đường dẫn thứ nhất mà ta đang chia sẻ trên một trang web khác, họ sẽ không muốn phí thời gian bấm vào một đường dẫn không có ý nghĩa gì, và ta nói rằng, đường dẫn đó có trải nghiệm người dùng không tốt. Và đường dẫn số 2 lại mang được trải nghiệm tốt hơn cho người sử dụng, giả sử như người dùng cuối đang quan tâm đến Arduino và hiện thực Led 7 đoạn thì đây đúng là cái mà họ cần bấm vào ngay.

Tối ưu hóa cho bộ máy tìm kiếm

Các bộ máy tìm kiếm hiện tại có khả năng phân tích ngữ nghĩa rất tốt, và kể cả đường dẫn mà bạn chia sẻ lên trang web khác. Nếu nó mang được thông tin trong đường dẫn, các bộ máy tìm kiếm cũng sẽ lưu ý đến những ngữ nghĩa mà nó phân tích được, và điều này quan trọng đến việc giúp cho bộ máy tìm kiếm hiểu được web của bạn nhiều hơn (khi mà người ta hiểu bạn hơn, thì họ sẽ có lòng tin vào bạn cao hơn) tương ứng với việc thứ hạng của bạn sẽ cao hơn trong bộ máy tìm kiếm (thuật ngữ gọi là SEO - Search Engine Optimization).

Cách hiện thực

Nên đặt thông tin gì lên đường dẫn?

Trong các bài viết, thông thường điều làm cho nó có ý nghĩa nhất chính là tiêu đề bài viết. Đối với tôi, tôi cũng sử dụng tiêu đề bài viết cho việc lưu trữ trong đường dẫn, ví dụ

  • Với tiêu đề: Giới Thiệu Skype4COM - Lập Trình Tương Tác Với Skype Trên Windows - C#.NET, ta có đường dẫn là: www.stdio.vn/ ... /309/gioi-thieu-skype4com-lap-trinh-tuong-tac-voi-skype-cnet
  • Với tiêu đề: DirectX – Lịch Sử Phát Triển Và Những Thăng Trầm, ta có đường dẫn là: www.stdio.vn/ ... /300/directx-lich-su-phat-trien-va-nhung-thang-tram

Trong một số trường hợp, có thể đường dẫn ta sẽ khác, chẳng hạn trang thông tin cá nhân các thành viên STDIO thì nó có dạng sau

  • Với tên là Kevin La thì đường dẫn sẽ có dạng www.stdio.vn/users/index/1/kevin-la
  • Với tên là Rye Nguyen thì đường dẫn sẽ có dạng www.stdio.vn/users/index/74/rye-nguyen

Như vậy, khi chia sẻ đường dẫn, ta sẽ chia sẻ các đường dẫn có dạng thêm thông tin này, mặc dù khi tìm kiếm dữ liệu trong cơ sở dữ liệu bài viết ta chỉ cần con số 309, 300, ... (là chỉ mục bài viết trong cơ sở dữ liệu) để truy vấn.

Ý tưởng hiện thực

Ở toàn bộ các trang có liên kết đến bài viết, sản phẩm ta sẽ tạo ra các liên kết thay vì chỉ có chỉ mục, ta sẽ gắn thêm nội dung của tiêu đề bài viết vào. Độc giả hoặc người dùng cuối muốn chia sẻ bài viết của web sẽ có các đường dẫn này để chia sẻ lại trên các trang web khác, đó chính là mục tiêu của ta.

Khi gửi về Server để tính toán, ta chỉ quan tâm đến chỉ mục để tìm kiếm dữ liệu và có thể không cần quan tâm đến phần mô tả phía sau. Giả sử ta có www.stdio.vn/users/index/1/kevin-la. thì ta chỉ cần quan tâm đến chỉ mục 1 để tìm kiếm thông tin của user này và không cần quan tâm đến kevin-la.

Vấn đề nảy sinh là ta sẽ tạo luôn đường dẫn dựa trên tiêu đề khi người đăng bài viết vừa đăng bài và lưu vào cơ sở dữ liệu hay là khi bài viết được truy vấn thì ta mới sử dụng tiêu đề và tạo ra đường dẫn này? Ta cần phân tích điểm thuận lợi và bất lợi của 2 phương pháp này - tôi dùng kinh nghiệm với STDIO để giải thích cho bạn, do đó, nếu bạn có kinh nghiệm khác hoặc ý tưởng khác có thể chia sẻ lại cho chúng tôi. Theo STDIO, tôi sẽ gọi 2 khái niệm này là OntimeCompute (Tại thời điểm truy vấn bài viết mới tạo ra đường dẫn dựa trên tiêu đề) và PreCompute (tính trước, lưu trữ sẵn).

OntimeCompute

Vào thời điểm truy vấn bài viết, ta sẽ có cả thông tin về tiêu đề bài viết, lúc này, dựa vào tiêu đề bài viết ta sẽ tạo ra đường dẫn. Điều này rất tiện lợi và ta không cần lưu trữ thêm vào cơ sở dữ liệu đường dẫn này. Tuy nhiên, nó có 1 vấn đề nảy sinh. Giả sử ta có nhiều người sử dụng cuối đã chia sẻ đường dẫn này lên mạng xã hội hay các trang web khác.

Giả sử ta có "Giới Thiệu Skype4COM" và ta sẽ có đường dẫn thân thiện là "gioi-thieu-skype4com". Và có 1 lượng người dùng đã chia sẻ đường dẫn của ta lên các trang web khác www.stdio.vn/ ... /309/gioi-thieu-skype4com. Sau đó, ta có nhu cầu đổi tiêu đề thành "Giới Thiệu Skype4COM - Lập Trình Tương Tác Với Skype Trên Windows - C#.NET" thì đường dẫn trên trang web ta sẽ là "www.stdio.vn/ ... /309/gioi-thieu-skype4com-lap-trinh-tuong-tac-voi-skype-cnet" và lúc này đường dẫn thật sự và đường dẫn mà người sử dụng đã chia sẻ là khác nhau, mặc dù về kỹ thuật nó vẫn đáp ứng tốt việc truy vấn bài viết.

Do các bộ máy tìm kiếm sẽ đánh chỉ mục, thứ hạng từng đường dẫn 1 nên chắc chắn đường dẫn mới này sẽ phải xây dựng thứ hạng lại từ đầu.

Đặt giả thiết, nếu ta xây dựng đường dẫn lần đầu, và sau này có đổi tiêu đề thì không ảnh hưởng đường dẫn đó, thì mọi thứ sẽ khác, ta tham khảo giải pháp thứ 2 - PreCompute.

PreCompute

Khi người đăng bài đăng bài của họ lên, tiêu đề sẽ được phân tích thành đường dẫn thân thiện và lưu vào cơ sở dữ liệu.

_id _title _friendly_url _content
1 Template Đăng Bài Trên Stdio template-dang-bai-tren-stdio ...
2 Một Cách Hiểu Về Khái Niệm Server Và Client mot-cach-hieu-ve-khai-niem-server-va-client ...
3 Virtual Table Và Hiện Thực Hóa Polymorphism virtual-table-va-hien-thuc-hoa-polymorphism ...
4 Design Pattern - Adapter Pattern design-pattern-adapter-pattern ...
... ... ... ...

Như vậy, ta chỉ cần tạo đường dẫn thân thiện ngay thời điểm đầu tiên đăng bài, những lần sau cập nhật bài viết, tiêu đề ta sẽ không cập nhật đường dẫn này. Và khi truy vấn bài, ta chỉ cần lấy thông tin này (_friendly_url) là được.

Nhược điểm của phương pháp này có thể làm xảy ra sự sơ sót trong tiêu đề và không cập nhật lại được đường dẫn thân thiện. Tuy nhiên, ta có thể thêm tính năng sửa đổi _friendly_url một cách chủ động, và hiện tại STDIO đang dùng phương pháp này.

Quan điểm cá nhân

Đối với tôi, tối ưu hóa bộ máy tìm kiếm tôi không quan trọng lắm, nhưng về trải nghiệm người dùng tôi luôn đề cao. Thiết nghĩ, chúng ta hoàn tất một sản phẩm thì nên suy nghĩ nhiều hơn về giá trị mà người sử dụng cuối nhận được và trải nghiệm của họ có được mới là quan trọng. Nếu không còn bộ máy tìm kiếm nữa, thì những giá trị mà ta mang lại và thời gian mà ta đã đầu tư chính là món quà lớn nhất mà ta gặt hái được.

Nhưng suy cho cùng, các bộ máy tìm kiếm cũng dựa trên các giá trị này mà xây dựng nên sản phẩm của họ. Nên, theo tôi, thay vì nghĩ đến vấn đề khách hàng, bạn hãy nghĩ đến sự cống hiến, bạn sẽ được nhiều hơn những gì mà bạn muốn.

THẢO LUẬN
ĐÓNG