Các vấn đề về permalink của WordPress

Tôi mới đọc được một bài viết hay về cách sử dụng permalink của WordPress một cách hiệu quả để tăng hiệu suất Website. Từ trước đến giờ, permalink của WordPress hay được các webmaster nói đến về khía cạnh SEO, bởi nó thực sự đã làm rất tốt nhờ vào việc viết lại các đường link 1 cách đẹp đẽ. Tuy vậy, khi website của bạn có lượng truy cập lớn, thì vấn đề hiệu suất lại được đặt hàng đầu, và permalink cũng góp phần trong đó.

1. Permalink và SEO


Trước tiên, chúng ta xem qua thử các cách mà webmaster làm với permalink của WordPress để đạt được mục đích SEO cao nhất. Nếu đọc qua nhiều blog, bạn sẽ được hướng dẫn để chọn 1 trong các loại permalink sau cho bài viết (post):

/%postname%/: kiểu này được nhắc đến nhiều nhất, và được nói đến như là kiểu permalink có giá trị SEO cao nhất.

/%postname%.html: một biến thể của kiểu trên, có thêm đuôi html để "tạo cảm giác" rằng đó là 1 trang web thông thường.

/%postname%/%postid%/: biến thể của kiểu đầu tiên, có chèn thêm id bài viết.

/%category%/%postname%/: kiểu này cũng được đề nghị nhiều, vì đường dẫn tới bài viết có chứa thêm thông tin về chuyên mục của nó. Nó sẽ tốt cho người dùng vì nhìn vào đó họ có thể biết mình đang đọc về mảng nào.

Còn 1 số kiểu khác nữa, ở đây tôi chỉ nêu 1 vài kiểu chính. Riêng bản thân tôi mới đầu chọn kiểu /%year%/%month%/%day%/%postname%/ cho website TaiPhanMem.org, nhưng sau 1 thời gian, khi server bảo trì hoặc nâng cấp thì có sự chênh lệch về múi giờ của server, nên ngày post bài có thể bị xê dịch đi 1 ngày, khiến cho permalink hoạt động không còn đúng nữa. Nếu bạn gặp trường hợp này, hoặc muốn di chuyển sang host (server) khác thì nên cân nhắc, vì múi giờ của nơi đặt server thường là khác nhau. Sau đó, tôi cũng đọc 1 số bài viết về SEO cho WordPress và do các bài viết cần update theo ngày tháng nên quyết định đổi sang dạng permalink khác.

Dạng mà tôi chọn hiện giờ là download-%postname%.html, các bạn có thể thấy ở đây tôi dùng 1 mẹo nhỏ để "bơm từ khóa" vào url (từ khóa download). Nếu bạn làm 1 site chuyên biệt về gì đó, thì có thể dùng mẹo này để tăng hiệu ứng SEO lên, nhưng đừng lạm dụng quá, vì url dài quá sẽ khó đọc và nhớ cho người dùng.

2. Đổi cấu trúc permalink cho WordPress


Đó là nói về SEO với permalink của WordPress. Bạn có bao giờ gặp rắc rối với các kiểu permalink của WordPress chưa? VD như một ngày đẹp trời, bạn đổi ý, muốn đổi sang permalink dạng khác? Nếu vậy thì bạn nên dùng plugin Dean's Permalinks Migration for WordPress, nó sẽ đảm bảo cho bạn đổi cấu trúc permalink mà không ảnh hưởng gì.

Thực tế thì plugin này sẽ sinh ra các redirect cho permalink cũ, hướng nó tới permalink mới mà bạn đang dùng, đảm bảo rằng khách viếng thăm sẽ đến đúng nơi cần đến.

Và xin bạn nên cân nhắc cực kì cẩn thận trước khi quyết định đổi cấu trúc permalink. Bởi vì nó là con dao 2 lưỡi đối với SEO. Các bộ máy tìm kiếm đã đánh dấu trang bạn theo các link cũ, người dùng khi tìm kiếm sẽ thấy các link này, và sẽ click vào đó. Nếu mọi thứ ổn thỏa, họ sẽ tới đúng nơi, còn không là 1 thông báo lỗi 404. Điều đó nói lên 2 vấn đề: thứ nhất là bộ máy tìm kiếm vẫn "tạm thời" index theo cấu trúc cũ, bạn sẽ mất khá nhiều thời gian để khiến chúng index lại đúng theo ý mình, thực tế ở website của tôi mất hơn 3 tháng mà chưa hết khoảng 2000 bài viết, các link cũ vẫn xuất hiện trong kết quả tìm kiếm. Thứ 2 là server của bạn phải chịu tải cho các quá trình redirect này. Xin đừng coi thường nó, vì với lượng bài viết và khách lớn, thì redirect của WordPress sẽ làm server mệt hơn bạn tưởng nhiều. Và nếu chẳng may còn sót lại link nào chưa được redirect đúng, thì lỗi 404 sẽ xuất hiện chẳng thú vị gì.

Nói về lỗi 404 và cách WordPress xử lí, chúng ta nên đọc bài viết của AlexKing (tác giả của nhiều plugin nổi tiếng, trong đó có Popularity, Twitter Tools, Mobile Edition). Hãy chú ý 1 con số mà tác giả đưa ra rằng cách mà WordPress xử lí lỗi 404 sẽ khiến server load nặng hơn gấp 20 lần so với cách nó xử lí 1 trang bình thường! Thật khủng khiếp.

Thêm nữa, 1 vấn đề đặt ra khi bạn đổi cấu trúc permalink là các liên kết nội tại của website. Giả sử bạn viết bài A, có link đến bài B của chính bạn, thế thì khi đổi cấu trúc permalink, liên kết của bài B trong bài A sẽ không còn chính xác nữa. Với số lượng link nội tại nhiều, lỗi sẽ nhiều lên, nó sẽ làm các bộ máy tìm kiếm đánh giá bạn thấp đi và tất nhiên điểm SEO của bạn sẽ không được như trước. Còn nếu bạn dùng dạng mặc định của WordPress /?p=%postid%, chắc bạn có thể ăn ngủ mà không cần phải lo lắng :D

Google Webmaster Blog cũng khuyến cáo bạn không nên lạm dụng url redirect. Vì thế, hãy cẩn thận.

3. Và liên quan đến hiệu suất website


Các cấu trúc permalink ảnh hưởng thế nào đến hiệu suất website? Hãy xem thử 1 đường link sau đây:

http://site.com/mycat/mypost

Bạn cho rằng đó là 1 link loại gì? Link đến 1 bài viết (post) hay 1 trang (page) hay 1 phân mục (category)? Không ai biết được (dù bạn có đoán theo ngữ nghĩa) nếu không trực tiếp chạy nó trên trình duyệt. Vậy thì WordPress phải làm sao trước tình huống này để đưa ra cho ta đúng cái ta cần? Câu trả lời là nó phải thử từng trường hợp. Vẫn trong link của bài viết tôi nhắc tới lúc đầu có 1 minh họa cho cách WordPress làm việc:

- đầu tiên nó thử coi đây là 1 trang (page), nó query đến CSDL để lấy kết quả. Không nhận được gì.
- nó lại thử tiếp rằng giả sử đây là 1 category, cũng query đủ thứ (query cho category thì nặng nề hơn), nhưng cũng không nhận được gì.
- rồi nó tính thử xem đây có phải bài viết không, query thì thấy có 1 kết quả trả về postslug tương đương. Vậy là đúng rồi, nó kết luận, và trả kết quả cho người dùng.

Cái cách thử-sai của WordPress này khiến nó làm việc nhiều hơn cái mà nó đáng phải làm. Nếu bạn chỉ định ID bài viết trong url, không cần phải đoán, nó biết ngay đó là ID bài viết và query chính xác, hay url dạng /2009/01/01/abc/ thì nhắm mắt cũng biết là 1 bài viết ngày 01-01-2009, cứ vậy mà query, làm sao không nhanh được.

Chính những người làm ra WordPress cũng nhận rõ điểm này, nên họ đã khuyên chúng ta không nên để các text đứng đầu trong permalink (như %category%, %tag%, %postname%, %author%), vì nó khiến WordPress mất thời gian dò tìm. Họ khuyên chúng ta nên đặt 1 tham số dạng số (như ID hay ngày tháng) để WordPress xác định nhanh hơn. Đặc biệt, họ nhấn mạnh rằng permalink dạng chỉ có nguyên /%postname%/ là không nên dùng.

Lưu ý là điều này không những đúng cho WordPress mà còn đúng cho mọi website khác. Nhưng thường WordPress được nói đến vì nó cho phép tùy biến url quá tốt!

Thêm nữa, nếu có thời gian ngó qua CSDL của WordPress, bạn sẽ thấy với các kiểu permalink kể trên, WordPress sẽ tạo thêm nhiều dữ liệu phụ lưu trong đó. Mục đích là để giúp nó tự tìm kiếm bài viết nhanh hơn theo cấu trúc permalink đưa ra. Điều này sẽ làm phình CSDL một cách không đáng có. Và đôi khi còn gây ra lỗi. Hãy tìm thử ở forum Support của WordPress, có nhiều người phàn nàn về vụ CSDL phình to và CPU load nặng do WordPress.

Cuối cùng là 1 link tham khảo đến bài viết của Google Webmaster Blog, rằng link dạng động (VD như ở WordPress là /?p=postid) chưa chắc đã phải là điều xấu cho SEO.

Chúc các bạn có được cấu trúc permalink hợp lí.

5 nhận xét :

  1. BÀi viết hay, mình cũng đã từng đọc bài này và thiết nghĩ kỹ thuật Google Friendly Search liên quan rất nhiều đến permalink

    Trả lờiXóa
  2. Má ơi, anh toàn chơi /%postname%/, hic tiêu rồi. :((

    Trả lờiXóa
  3. Nếu anh ko gặp vấn đề về performance thì giữ vậy cũng ko sao. Nhưng mà sử dụng trên shared host thì tối ưu được thì nên tối ưu. Vả lại sau này khi lượng bài viết và người truy cập tăng lên, việc đổi permalink sẽ tốn thời gian và công sức hơn.

    Trả lờiXóa
  4. Bài viết rất hay nhưng sau khi đọc xong, mình cảm thấy rối rắm quá bởi không biết kiểu permalink nào là tối ưu nhất.

    Blog của mình hiện đang xài kiểu /%category%/%postname%/ vì mình không thích permalink có chứa số, nó sẽ làm cho người đọc cảm thấy khó nhớ và thậm chí là không muốn nhớ. Thay vào đó, mình muốn thể hiện rõ cho người đọc biết được họ đang đọc bài viết ở chuyên mục nào, đôi khi họ có thể vào ngay chuyên mục ấy bằng cách bỏ đi /%postname%/ trong permalink để kiếm những bài khác cùng chủ đề.

    Mình thấy một blog cá nhân với vài page và category (như blog của mình) thì việc query từ permalink sẽ không tốn quá nhiều thời gian, điều này còn phụ thuộc vào nhiều yếu tố khác.

    Cuối cùng mình quyết định vẫn trung thành với kiểu permalink hiện tại của mình. :D

    Trả lờiXóa
  5. Ừ, nếu 1 blog cá nhân thì yếu tố performance ko quan trọng lắm. Thực tế thì cách đặt permalink dạng như của bạn và dạng %postname% vẫn rất phổ biến. Khi nào mà lượng truy cập vào blog bạn tăng lên rất nhiều, và có vấn đề gì đó với performance thì lúc ấy hãy cân nhắn :D

    Trả lờiXóa