Utilizziamo il backbone pesantemente per rendere le nostre pagine. Tutti i dati vengono passati come json dal server e l'html viene creato sul client con backbone e baffi. Questo pone un grosso problema per il SEO. Un modo che stavo progettando di aggirare era quello di rilevare se la richiesta proviene da un bot e utilizzare qualcosa come HtmlUnit per rendere la pagina sul server e sputarla fuori. Mi piacerebbe qualche idea alternativa. Inoltre vorrei sapere se c'è un difetto in ciò che sto pensando di fare.SEO per una pagina pesante di backbone js
risposta
Non mi piace necessariamente che l'unica opzione che hai per le risposte è di rifare tutto per soddisfare una vasta pratica migliore. Ci sono buone ragioni per considerare di fare le cose usando un approccio Javascript non ostruente, ma forse c'è un buon motivo per farlo come un sito richiesto da JS. Facciamo finta che ci sia.
Se si sta eseguendo un'applicazione Backbone.js con modelli di client inseriti dinamicamente, il modo migliore che potrei pensare di fare è nel seguente link. Fondamentalmente, equivale a dire a un browser headless di eseguire una serie di comandi di navigazione per visualizzare tutti i tuoi utenti/prodotti/pagine e salvare un file html statico ad ogni passaggio per ragioni SEO.
What's the least redundant way to make a site with JavaScript-generated HTML crawlable?
Crea il tuo sito utilizzando Progressive Enhancement e Unobtrusive JavaScript.
Quando si esegue roba Ajax significativa, utilizzare the history API.
Quindi hai veri URL per tutto e Google non sarà un problema.
In un progetto su cui sto lavorando in questo momento sto cercando di coprire tutte le basi .. Backbone guidato cliente, uris pushState, pagine memorizzabili come segnalibro, e html fallback, se possibile. L'approccio che ho preso è quello di utilizzare Moustache per i modelli, suddividerli in piccoli componenti per le mie viste backbone e renderli disponibili in un formato raw al client. Quando viene richiesta una pagina, i template possono essere elaborati sul server per produrre una pagina intera e il backbone si collega agli elementi che vuole controllare.
Non è una configurazione semplice, ma finora non ho colpito nessun roadblock e non ho duplicato alcun modello. Ho dovuto creare un modello di page wrapper per ogni url disponibile poiché Mustache non esegue "wrapper", ma penso che dovrei essere in grado di eliminarli con qualche codifica aggiuntiva sul server.
Il piano è quello di essere in grado di avere alcuni componenti come JS puri dove richiesto dall'interfaccia e alcuni reso dal server e migliorato con js dove desiderato ..
Stai condividendo modelli o codice di elaborazione modello? L'idea è stata interessante per me per un po '. Se si utilizza node.js, sembra che sia i modelli che la logica possano essere condivisi. Se si utilizza RoR, sembra che i modelli possano essere condivisi, perché la sintassi ERB è principalmente compatibile con il template JS – SimplGy
Stiamo condividendo modelli tra server e client. Eseguendo Python sul server usiamo Pystache per elaborare i modelli. Utilizziamo i partial per elementi come gli elementi in un elenco e rendono il modello parziale disponibile per il codice client in modo che possa aggiungere elementi all'elenco quando necessario. Penso che la logica richiesta di solito sarà diversa a seconda che ci si trovi nel client o sul server, ma condividiamo la logica lato server tra i gestori rpc ei gestori di pagine, avendo loro metodi di chiamata molto leggeri e chiari sul controller comune/oggetti del modello. – lecstor
C'è pro ei contro di utilizzare il Google AJAX crawling schema - l'ho usato per un sito di social networking (http://beta.playup.com) con risultati alterni ...
ho scritto un gioiello per gestire questa situazione in modo trasparente come cremagliera middleware per gli utenti rubino (gem install google_ajax_crawler) (https://github.com/benkitzelman/google-ajax-crawler)
Leggi su di esso a http://thecodeabode.blogspot.com.au/2013/03/backbonejs-and-seo-google-ajax-crawling.html
Il riepilogo è che, anche se sono riuscito a pubblicare istantanee dom rese a un motore di ricerca richiedente, e ho potuto vedere utilizzando gli strumenti per webmaster che Google stava analizzando come 11.000 pagine del sito, ho scoperto che Google era più incline a classificare il apps vari stati (urls) come versioni della stessa pagina e non come indici separati. Prova a effettuare una ricerca per beta.playup.com - viene elencato solo un indice anche se il contenuto sottoposto a rendering cambia radicalmente tra gli URL) ....
Se usate node.js utilizzano rendr
Render tue applicazioni Backbone.js sul client e il server, utilizzando Node.js.
- 1. Coda Ajax Backbone js
- 2. Backbone JS Paginazione
- 3. Invertire una rotta in Backbone js
- 4. Richiedi js backbone JS global models
- 5. Astrazione logica in Backbone js
- 6. Backbone complesso JS modello prendere
- 7. Backbone js model dependency injection
- 8. Backbone js collezione di numeri di emissione
- 9. Caricamento di modelli con backbone js
- 10. Backbone JS parse json attributo al modello di una collezione
- 11. Backbone js ri-rappresentazione lascia l'eventless vista
- 12. Ricreazione di una vista rimossa nel backbone js
- 13. backbone andare a un'altra pagina
- 14. Pagina di ricerca Backbone semplice: come faresti?
- 15. Backbone I modelli JS e Collezione URL
- 16. Riutilizzo delle viste/rotte del backbone sul server quando si utilizza Backbone.js pushstate per seo/bookmarking
- 17. Backbone JS Routing non funziona come previsto
- 18. Firebase hosting SEO per SPA
- 19. Hammer JS non funziona con backbone
- 20. Migliaia di reindirizzamenti 301 cattivi per SEO?
- 21. Generazione di html per SEO
- 22. Quale BDD per applicazioni backbone JS che supporta testing
- 23. pesante scraping iTunes Connect
- 24. AdBlock richiede requirejs/codice backbone (blocca l'intera pagina)
- 25. 10 backbone js, vista di aggiornamento sul cambio di modello
- 26. Nightmare Js valutare pagina
- 27. jquery load() e SEO - qualcuno ha una risposta decente?
- 28. Indent di testo vs posizione per SEO
- 29. Locust.io Test carico pesante
- 30. Creazione di una vista backbone per una collezione
Penso che oltre alle complicazioni SEO (a chi importa di persone senza JS) c'è qualcosa di molto interessante nei servizi RESTful in cui il linguaggio lato server non è responsabile per sputare un carico di spaghetti HTML, o anche se questo è MVCed che lega ancora i dati a una vista fissa di html. –