2010-03-12 31 views
8

Tôi muốn sử dụng #! thẻ để làm cho ứng dụng GWT tôi thu thập thông tin, như đã mô tả ở đây: http://code.google.com/web/ajaxcrawling/Làm GWT ứng dụng thu thập thông tin bằng công cụ tìm kiếm

Có một GWT ứng dụng mẫu có sẵn trực tuyến có sử dụng này, ví dụ: http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton

sẽ phục vụ các trang web tĩnh sau vào googlebot: http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton

tôi muốn ứng dụng GWT của tôi để làm điều gì đó tương tự. Tóm lại, tôi muốn phục vụ một hương vị khác của trang bất cứ khi nào tham số _escaped_fragment_ được tìm thấy trong URL.

Tôi nên sửa đổi điều gì để máy chủ phân phát một thứ khác (trang tĩnh hoặc trang được tạo động qua trình duyệt không có đầu như HTML Unit)? Tôi đoán nó có thể là tập tin web.xml, nhưng tôi không chắc chắn.

(Lưu ý: Tôi nghĩ đến việc kiểm tra ứng dụng Trình diễn cung cấp cùng với GWT SDK, nhưng tiếc là nó không có vẻ để hỗ trợ phục vụ các file tĩnh trên _escaped_fragment_ và nó không sử dụng các thẻ #! ..)

+0

Được đăng chéo trên Nhóm Google GWT. Bạn cũng có thể muốn đọc câu trả lời ở đó: http://groups.google.com/group/google-web-toolkit/browse_thread/thread/15a922e701e9e2db?hl=vi –

+0

Tôi đã đăng câu hỏi để tạo thêm nhiều thảo luận xung quanh vấn đề này đề tài. "Làm cho ứng dụng AJAX có thể thu thập thông tin? Làm thế nào để xây dựng một dịch vụ web đơn giản trên Google App Engine để tạo ra các ảnh chụp nhanh HTML?" http://stackoverflow.com/questions/3517944/making-ajax-applications-crawlable-how-to-build-a-simple-web-service-on-google-a –

Trả lời

2

Nếu bạn muốn sử dụng web.xml, thì tôi nghĩ nó sẽ không hoạt động với một bản đồ servlet, bởi vì các mẫu url bỏ qua các tham số get. (Không chắc chắn 100%, nếu có cách khác để làm điều này có thể.)

Bạn có thể ánh xạ Showcase.html thành một servlet và trong servlet đó quyết định việc cần làm, dựa trên tham số get "_escaped_fragment_" . Nhưng có một chút tốn kém khi gọi Servlet chỉ để phục vụ một trang tĩnh cho phần lớn các yêu cầu (không quá tệ, nhưng vẫn còn. Bạn có thể đặt tiêu đề bộ nhớ cache, nếu bạn chắc chắn rằng nó không thay đổi).

Hoặc bạn có thể có một Apache hoặc một cái gì đó ở phía trước máy chủ của bạn - nhưng tôi hiểu, tôi cũng không muốn phải làm điều đó. Có thể máy chủ JavaEE của bạn (máy chủ nào bạn đang sử dụng BTW?) Cung cấp một số cơ chế lọc URL trước khi yêu cầu được chuyển vào thùng chứa web - tôi cũng muốn biết điều đó!

+0

Cảm ơn nhận xét sâu sắc. Tôi đang chạy dự án của tôi trên Google App Engine vì vậy tôi không chắc chắn bao nhiêu truy cập (hoặc thậm chí là) servlet container tôi đang sử dụng ... Tôi có lẽ có thể tìm ra, mặc dù. Sau khi đọc một số, tôi đã thjinking rằng các bộ lọc có thể làm các trick, nếu chỉ họ nhận được tham số get. Tôi sẽ kiểm tra. –

+0

Sử dụng Bộ lọc khá giống với việc sử dụng Servlet trong trường hợp này (tôi không nghĩ rằng có nhiều sự khác biệt về hiệu suất). Trong mọi trường hợp, bạn sẽ có thể truy xuất tham số get qua servletRequest.getParameter (...) –

+0

Làm cho tinh thần. Tuy nhiên, bộ lọc làm cho nó có thể tiếp tục với phần còn lại của chuỗi bộ lọc nếu tôi không muốn xử lý yêu cầu (tức làtham số _escaped_fragment_ không có mặt). Có cách nào để làm tương tự với một servlet? –

2

Tìm thấy câu trả lời của tôi! Các Showcase mẫu hỗ trợ siêu liên kết thu thập thông tin là tại các chi nhánh sau: http://code.google.com/p/google-web-toolkit/source/browse/branches/crawlability/samples/showcase/?r=7726

Nó định nghĩa một bộ lọc trong web.xml để chuyển hướng URL với _escaped_fragment_ thẻ để đầu ra của HTML Unit.

+0

Chỉ để bình luận ở trên. Điều này có thể sẽ hoạt động nếu bạn sử dụng Tomcat của riêng bạn. Về phần tôi, tôi đang chạy trên Google App Engine. Vấn đề hiện tại là đơn vị HTML không chạy trên App Engine, nhưng nó có thể sớm thực hiện, theo: http://www.google.com/url?sa=D&q=https://sourceforge.net /tracker/index.php%3Ffunc%3Ddetail%26aid%3D2962074%26group_id%3D47038%26atid%3D448269%23&usg=AFQjCNGGJuWPDqFfUuc4k44HormgSgEM6g –

+0

nhánh đó không còn tồn tại, tức là, điều này không còn là một câu trả lời hữu ích, ít chính xác hơn nhiều. –

+0

Xin lỗi. Không thể tìm thấy nó ở bất cứ đâu, tôi đã bỏ chọn nó và sửa chữa. –

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