Ngày nay, cụm từ Single-Page Application ( SPA ) đang ngày càng trở nên phổ biến hơn, và đang dần trở thành một xu hướng trong việc phát triển ứng dụng Web. Cũng không có gì quá khó hiểu, khi mà SPA mang lại cho người dùng trải nghiệm quá vượt trội so với các ứng dụng web thiết kế theo phong cách truyền thống. Và đi cùng với đó, các công cụ hỗ trợ cho lập trình viên phát triển ứng dụng SPA ngày càng nhiều và liên tục được phát triển, cải tiến, điển hình trong số đó có thể kể đến các framework mà AngularJS ( và AngularJS 2 ) là những ví dụ điển hình, càng làm cho SPA trở nên phổ biến hơn. Ưu điểm thì là thế, nhưng có một điểm khá trí mạng, mà nếu như bạn từng làm một sản phẩm SPA nào, chắc đều đã có lần gặp phải, hay chí ít là cũng đã từng nghỉ đến, đó là SEO ( Search Engine Optimization ).

Về bản chất mà nói, có thể SEO và triết lí của SPA đi theo hai chiều hướng khác nhau một trời một vực : SPA muốn hướng tới trải nghiệm người dùng ( UX - User Experience ) mượt mà nhất, và tựu chung lại, nó đạt đến mục đích đó bằng cách : Phần source code của ứng dụng web ( Html, css, Js ... ) được load về một lần, và các tài nguyên của ứng dụng web ( text, video, image ... ) sẽ được load động về một cách thích hợp khi cần thiết, để đáp lại tương tác từ phía người dùng. Thêm vào đó, mặc dù cách hiển thị có thể đôi khi mang làm cho người dùng có cảm giác không phải thế, nhưng về bản chất mà nói, các ứng dụng web SPA không thực hiện việc load lại trang hay điều hướng sang trang khác.

SEO thì ngược lại hoàn toàn, như ngay trong tên gọi của mình đã hàm chứa, SEO là các kĩ thuật, hướng website tương tác tốt nhất với đối tượng là các công cụ tìm kiếm . SEO không quan tâm tới trải nghiệm lướt web mượt mà, mà quan tâm nhiều hơn tới các yếu tố như keyword trong content của website, lượng backlink, hay optimize website sao cho crawler của các công cụ tìm kiếm thực hiện việc đánh index được một cách dễ dàng nhất. Ta có thể thấy một cách khá hiển nhiên, đa phần các công việc này gần như đi ngược hẳn lại những gì mà thiết kế SPA hướng tới, qua đó không quá khó hiểu khi việc thực hiện SEO cho các website thiết kế theo phong cách SPA khiến khá nhiều người vò đầu bứt tóc.

Thật lòng mà nói, nếu như bạn đang đứng trong vai một người phát triển sản phẩm web, gặp khó khăn trong việc thực hiện SEO, và đem thắc mắc của mình đi hỏi, phần lớn sẽ trả lời bạn rằng, cách tốt nhất là đừng làm. Nghĩa là, giải pháp đơn giản nhất cho bài toán này, là bạn hãy tự hỏi bản thân xem, sản phẩm của bạn hướng tới điều gì : Nếu như website của bạn đang đặt khả năng expose đến với người dùng lên hàng đầu (ví dụ như một trang web giới thiệu sản phẩm, hay cổng thông tin tổng hợp tin tức ...) thì bạn đừng nên ngoan cố học theo mốt mà làm SPA mà làm gì. Ngược lại, nếu như website của bạn hướng tới việc cung cấp dịch vụ một cách mượt mà nhất cho người dùng ( ví dụ như bạn làm một ứng dụng xử lí văn bản online chẳng hạn ...) thì lúc đó, bạn không nên quá quan tâm tới các kĩ thuật SEO.

Thế nhưng, như vẫn thường nói, đời không như là mơ, mọi việc thường thì sẽ không được như ý, đôi khi bạn vẫn phải tìm cách dung hợp hai khái niệm đối ngược nhau này vào trong cùng một sản phẩm. Có thể đó là do bạn đã đi quá sâu vào trong quá trình phát triển một ứng dụng SPA để có thể thay đổi lại từ đầu, hay có thể bạn đã chọn SPA nhưng vẫn muốn ít nhiều giúp cho sản phẩm của mình dễ được tìm thấy hơn qua các công cụ tìm kiếm. Nói chung, bài toán đã đặt ra cho bạn rõ ràng, và bạn đang cần lời giải. Trong trường hợp đó, một vài thủ thuật SEO sau, có lẽ sẽ ít nhiều giúp ích được cho bạn.
Lập danh sách tất cả các page bạn muốn được đánh index trong website của bạn

Khó khăn đầu tiên, và cũng là hiển nhiên, dễ thấy nhất trong việc thực hiện SEO cho các ứng dụng SPA, đó là việc các crawler không thể lấy về được content trong website của bạn.