Firebase-tools: Usa hosting con prerender.io

Creado en 10 oct. 2014  ·  93Comentarios  ·  Fuente: firebase/firebase-tools

Hola

Me pregunto si hay alguna forma de usar el alojamiento de Firebase junto con un servicio como prerender.io.
De esta manera, sería posible implementar una aplicación web (es decir, una aplicación angularjs) con capacidades de SEO.

Gracias

question

Comentario más útil

Solo quería decir rápidamente que definitivamente tenemos esto en nuestro radar. Es importante, pero también lo son muchas otras cosas (como enumeró Kato). Tenemos algunas ideas sobre algunas formas excelentes de abordar este problema, pero tienen algunas dependencias que tenemos que eliminar primero. ¡Trate de ser paciente y sepa que definitivamente esto está en nuestras mentes!

Todos 93 comentarios

Hola,

Actualmente, las reglas de reescritura / redireccionamiento de Firebase Hosting no son lo suficientemente detalladas para los servicios de preprocesamiento, pero algunos de nuestros clientes han tenido éxito al crear un paso previo al renderizado en su proceso de compilación para sitios bastante estáticos usando html5 pushState. Realizan previamente cada página en función de la aplicación de una sola página para que el contenido correcto se muestre a un rastreador, luego, si el usuario navega a otra página, la aplicación web se hace cargo y se vuelve a reproducir sin actualizar la página.

Obviamente, esto es bastante complicado y obviamente no es ideal, pero estamos trabajando para que esto sea mucho menos un punto de dolor.

Espero que ayude

Chris

Me doy cuenta de que solo han pasado dos meses, pero ¿hay alguna actualización sobre esto? Dado que ustedes son propiedad de Google ahora, supongo que quieren que los sitios alojados con firebase sean indexados por su servicio de búsqueda.

No tenemos una actualización específica sobre esto en este momento, solo que el SEO es obviamente importante para nosotros y mantiene Firebase Hosting relevante para los desarrolladores. Espero tener una actualización para ti pronto

¡Hola chicos! Solo quería saber cuál es el estado de esta actualización. ¿vendrá pronto? Utilizo el alojamiento de Firebase y es genial, lo único que me preocupa es el SEO, mi sitio no aparece en ninguna parte de Google, también busqué integraciones de seo con firebase y no pude encontrar ninguna solución. Realmente me gusta mantener todo en un solo lugar, por lo que sería una pena cambiar a un servicio diferente que pueda servir mis páginas en el motor de rastreo de Google. Esto sería una gran mejora ya que sé que Firebase ahora es propiedad de Google. ¡Gracias!

También sigo interesado en este servicio. ¡Gracias!

Agregar mi voz al hilo, ¡sería genial tener esta función!

+1

Yo también estoy esperando esto.

Como alternativa, estoy buscando usar https://divshot.com + firebase.

+1

Debido al reciente anuncio de la fusión de DIvshot y Firebase, este problema surge nuevamente. De hecho, me mudé a Divshot para hacer uso de las capacidades personalizadas gratuitas de dominio y prerender.io. ¿Cómo va a hacer frente a fireabse esos problemas? ¿Va a agregar dominios personalizados al nivel gratuito? ¿Qué pasa con prerender.io?

Estamos investigando formas en las que podríamos llevar el procesamiento previo de JS a Firebase Hosting, pero no tenemos planes firmes para compartir en este momento. (Nota personal: realmente quiero que suceda).

Debido a que Firebase opina que todos los sitios deben ser solo HTTPS, administramos el aprovisionamiento de certificados SSL en nombre de nuestros usuarios. El costo involucrado en hacerlo nos impide poder ofrecer alojamiento de dominio personalizado gratuito.

Gracias por una respuesta ultrarrápida (juego de palabras).

Algún tipo de capacidad de SEO es más de lo necesario para las plataformas de alojamiento de aplicaciones web estáticas, así que espero que logren hacerlo funcionar hasta mediados de diciembre, de lo contrario, muchos desarrolladores deberán cambiar a proveedores de alojamiento de la vieja escuela (desafortunadamente incluyéndome a mí) ).

La segunda respuesta tiene mucho sentido y considero simplemente saltar al nivel pagado, es una pena que no esté proporcionando la misma escala adicional.

El 100% de los sitios de Firebase Hosting están en el CDN ultrarrápido (juego de palabras regurgitado) de Fastly. Obtienes todas las ventajas del plan de alto rendimiento de Divshot incluso en el plan gratuito (pero no en un dominio personalizado). En cuanto al ancho de banda, 10GB terminan siendo un _mucho_ de banda para un sitio web estático.

Debo admitir que no he pensado en las ventajas de alto rendimiento de Divshot. De todos modos, es una pena que tenga que migrar mi aplicación y preparar un backend (¡y retrasar nuevas funciones!), Mientras que el título de CS consume casi todo mi tiempo. Si bien mi proyecto no está tan avanzado, otros pueden sufrir retrasos enormes, por lo que nuevamente espero que Firebase nos ayude a ser amigables con el SEO o tal vez Divshot demore su cierre. Entiendo que probablemente esta no sea una opción, pero si algunos de nosotros migramos, es posible que nunca regresen.

¡Felicitaciones @mbleigh por la adquisición!

@DamodarSojka , estoy completamente de acuerdo contigo. Soy un usuario pago de Divshot. La reproducción previa es imprescindible para comercializar / compartir mi sitio web en Facebook. Si Firebase no ofrece esta capacidad pronto, tendré que migrar a otros servicios de alojamiento web.

+1 para la capacidad de SEO

También estamos pagando al cliente de Divshot y el soporte de Prerender es necesario para nosotros. El soporte de Prerender en Divshot no es ideal (debido a la URL de production.blabla.divshot.io después de compartir) pero si no hay soporte de Prerender en Firebase, no podemos usarlo. Gracias.

Del mismo modo, el SEO es de suma importancia, ya sea que esté utilizando prerender.io u otra solución similar. Esto debe abordarse en Firebase antes de que divshot se apague.

Sí, todavía tengo problemas con SEO

+1: cliente pagado de Divshot, necesitaría soporte de Prerender para migrar a Firebase.

Totalmente de acuerdo. Firebase no es un reemplazo de Divshot si no tiene capacidades de preprocesamiento. Soy un usuario de pago de Divshot. Con dos meses de anticipación del cierre de Divshot. ¿Debería trabajar en la migración a otro servicio? ¿Tengo que dedicar mi tiempo a configurar un servidor? ¿O seguir concentrado en lo que estaba haciendo? ¿No es esta la idea del servicio? ¿No tienes que lidiar con problemas con el servidor? Explique si Firebase será una opción para el 14 de diciembre o si debo tomarme mi tiempo para configurar un servidor.

Señores, Mike ya ha declarado, en su totalidad, el estado de esta función: estamos investigando formas en las que podríamos llevar el procesamiento previo de JS a Firebase Hosting, pero no tenemos planes firmes para compartir en este momento. (Nota personal: realmente quiero que suceda).

No hay una línea de tiempo. Lo queremos tanto como tú.

Tendrá que decidir por su cuenta lo que debe hacer. No tenemos una hoja de ruta pública. No podemos ofrecer garantías en ningún cronograma, independientemente de la cantidad de demandas o consultas. Lo siento, no son las respuestas suaves y felices, pero espero que las realistas sean más útiles para su planificación.

☼, Kato

Es bueno ver que realmente te preocupas :) ¡Gracias chicos!

@mbleigh / @katowulf Una pregunta sobre ese plan para llevar el procesamiento previo de JS a Firebase: ¿Cómo será el procesamiento previo de JS mejor que el soporte de SEO actual que ofrece Firebase?

Según esta respuesta SO , Firebase ya ofrece SEO listo para usar desde ng-conf 2015.

Así que no entiendo las ventajas de seguir intentando usar Prerender.io en Firebase.

@douglascorrea para Google SEO, las mejoras serán marginales, pero (resulta que) Google no es el único rastreador que existe: smile:

La mayor ventaja de esto es para los sitios que desean ofrecer un mejor soporte para las etiquetas OpenGraph de Facebook, las tarjetas de Twitter y los motores de búsqueda que no son de Google.

Gracias @mbleigh , aclara las cosas y me hace pensar que realmente queremos ese apoyo, o algún tipo de alternativa como dijo @drtriumph en su comentario.

Estaba buscando una solución y encontré los siguientes detalles que podrían ser buenos para otros lectores:

  • En octubre de 2015, Google desaprobó la recomendación de usar _escaped_fragment_ y el hashbang (! #). Entonces, para Google, cada SPA debe usar html5 pushstate (html5mode en angularjs). Pero continuarán apoyando hashbang (! #) Y traduciéndolo a fragmentos de escape por un tiempo.
  • Facebook y probablemente otros rastreadores todavía necesitan el escaped_fragment, el hashbang de traducción automática de Facebook a la notación _escaped_fragment. Y probablemente otros rastreadores hagan lo mismo, ya que fue la recomendación anterior de Google.
  • Dado que Firebase aún no admite redireccionamientos basados ​​en User-Agent, nuestra esperanza sigue siendo que los rastreadores traduzcan hasbangs (! #) A escape_fragament de esta manera:
    Si sus URL se ven así:
    http://www.example.com/#!/user/1
    Luego acceda a sus URL de esta manera:
    http://www.example.com/?_escaped_fragment_=/user/1

Entonces, por un tiempo, una idea para resolver esto podría ser esta:

  • No use html5 pushstate (modo html5 en Angular) y use hashbang en su lugar (! #)
  • Utilice prerender.io para crear una versión estática / en caché de cada página que desee en su aplicación (como el proceso normal de preprocesamiento).
  • Desarrolle un complemento que almacene esa versión en caché en una estructura de carpetas que comience con la carpeta ?_escaped_fragment_= y cree carpetas como:
    Si sus URL se ven así:
    http://www.example.com/#!/user/1
    La carpeta generada será
    ?_escaped_fragment_= +- /user +- /1

Donde el archivo 1 será el archivo html real.

  • Implemente esa carpeta en su carpeta raíz de base de fuego usando herramientas de base de fuego (este proceso podría automatizarse en un trabajo cron o algo así).

Cómo creo que funcionará:

  • Cuando un rastreador vea su URL hashbang, intentará llegar a la URL ?_escaped_fragment_= . Como tenemos archivos HTML reales en esas carpetas, Firebase servirá entonces y no redirigirá a index.html, por lo tanto, el HTML leído por el rastreador será la versión en caché y no la de AngularJS.

Para lograr eso, necesitamos crear un trabajo programado que ejecute el procesamiento previo para cada página, guarde esa carpeta y realice la implementación de la base de fuego.

Como la implementación de firebase no admite la implementación parcial (sincronizada o incremental), debemos mantener una copia actualizada de nuestra implementación en el servidor que será responsable de este proceso.

Intentaré configurarlo y le haré saber si funciona.

¿Puede permitirnos configurar "X-Prerender-Token" como podemos hacer con otras claves de encabezado?
https://www.firebase.com/docs/hosting/guide/full-config.html
https://prerender.io/install-token

+1

@ srk9 envíe un problema por separado en lugar de reutilizar este hilo.

¿Por qué está cerrado este problema? No veo una solución publicada.

@douglascorrea , ¿qué pasó con tu idea?

Gracias,
- D

Hola @bethuneco , lamento no publicar el resultado aquí.

En realidad estaba a punto de escribir un artículo pero luego me di cuenta que esta solución consistirá en mucha "maquinaria" para que funcione en producción, y no me sentí cómodo para "recomendarla" porque no sé cómo se comportará a gran escala.

Pero básicamente, como describí antes, necesito un servidor de "implementación / renderización previa" que, para cada implementación, procese / deseche todas las páginas y almacene el HTML resultante en las carpetas descritas anteriormente (/? _ Escaped_framgment_ / xxxx). Esos htmls "reales / físicos" serán nuestras páginas "renderizadas previamente".

Así que cada vez que un rastreador de google / facebook / twitter va a nuestra página y solicita el "fragmento de escape" a través del prefijo "? _Escaped_fragment", en realidad apuntará a una carpeta real con HTML reales, entonces, esos HTML se indexarán.
Cuando un usuario real va a la aplicación, no utilizará? _Escaped_fragment, por lo que recibirá la página dinámica.

El problema es que esta "solución" es que necesitamos seguir generando HTML para cada página adicional. Por ejemplo, si su aplicación es un CMS simple, para cada nueva publicación / artículo / página deberá ejecutar el proceso para generar la nueva página HTML. Pero el problema se agravará cuando hablamos de una red social dinámica, por ejemplo, donde cada usuario puede generar cientos de páginas "pre-reproducibles", entonces su rastreador interno / de preprocesamiento debería estar ejecutándose todo el tiempo. Y eso, en un mundo real, puede ser un freno.

Esta es una solución muy "engañosa" que podría funcionar para aplicaciones pequeñas, pero no para aplicaciones realmente grandes, porque en realidad estamos generando HTML para que estén ahí cuando los rastreadores se activen y no redirigir automáticamente a los rastreadores a nuestro servicio de preprocesamiento que lo preprocesará en línea (como un proceso normal de preproducción es).

Entonces, a estas alturas, deberíamos usar un servidor Nginx como servidor estático para poder prerender, o usar un competidor de Divshot como https://www.netlify.com/ que proporciona Prerender listo para usar para aplicaciones de una sola página. .

@douglascorrea ,

Gracias por esa explicación ampliada. Eres la primera persona en mencionar Netlify, así que lo investigaré.

Tienes razón en que la reproducción previa de todo solo es adecuada para sitios pequeños. Afortunadamente, mi aplicación es bastante pequeña (un máximo de aproximadamente 1200 páginas), por lo que podría funcionar.

La solución más simple (y la que Google está evitando) es preprocesar Javascript y servir HTML cuando se detectan agentes de usuario robot. Google ya ha demostrado la representación fuera del navegador, por lo que esto no es técnicamente difícil. Es un desafío estratégico para ellos porque parece ayudar a un competidor en el negocio de la publicidad.

Si consigo que algo funcione, publicaré una actualización aquí.

Permítanme proporcionar algo de claridad aquí para cualquiera que pueda estar confundido:

¿Firebase Hosting admite el procesamiento previo de JS en el servidor? No, no es así. El procesamiento previo del lado del servidor es algo que nos gustaría apoyar y está en nuestra hoja de ruta a largo plazo, pero no tenemos fechas específicas ni plazos para anunciar en este momento. Sabemos que este es un punto de dolor, especialmente para aquellos que usan las tarjetas de Twitter o compartir en Facebook, y esperamos poder compartir más sobre esto en el futuro.

¿No puedes apoyar, por ejemplo, X-Prerender-Token ? No, eso no funcionará. La reproducción previa debe servir el _contenido real de reproducción previa_ en la URL ?_escaped_fragment_= , lo que significa que no es solo el encabezado, sino el contenido que el servidor debe conocer y manejar correctamente. No hay una solución a medias tanto como desearíamos.

¿Qué tipo de preproducción es posible? El único tipo de "reproducción previa" real que puede realizar en este momento es la compilación de sitios estáticos. Por lo general, esto se hace con algo como Jekyll, pero ciertamente es posible usar un navegador sin cabeza localmente para "preprocesar" un sitio más dinámico. Debe renderizar exhaustivamente cada URL y luego implementarla, por lo que este no es un caso de uso fantástico en este momento. Tenga en cuenta también que crear nombres de archivo con ?_escaped_fragment_ en ellos _no_ es posible, ya que la CDN elimina los parámetros de consulta y, por lo general, este no es un caso de uso compatible.

¿Es esto algún tipo de estrategia de Google para mantener a raya a otros rastreadores? No, absolutamente no. Queremos respaldar las ventajas que brinda la reproducción previa a Firebase Hosting. Todo es cuestión de tiempo y recursos.

Tuve que cambiar de hosting firebase debido a las etiquetas de las redes sociales / problema de SEO alternativo. Es un factor decisivo cuando las personas no relacionadas con la tecnología se dan cuenta de que no tenemos buenas imágenes en nuestros enlaces como todos los demás en Internet.

Puede prerender con phantomjs y prerender middleware. Es de código abierto y funciona bien, pero elegí prerender.io para evitar el trabajo de operaciones. Es un poco lento en la primera solicitud, pero puede almacenar en caché las páginas solicitando de forma preventiva cada página.

Es bueno solicitar todas las páginas también, porque luego puede ejecutar algunas pruebas en ellas, analizar el html para asegurarse de que las etiquetas y el contenido se muestren correctamente.

Aunque hay una gran advertencia. Prerender no funciona con datos de base de fuego en vivo. ¿Cómo pudo? Los datos de Firebase son en tiempo real, la conexión es persistente. La reproducción previa es única, la conexión está cerrada. No hay forma de saber cuándo la página ha terminado de renderizarse, porque no se pueden contar las solicitudes.

Tenía un par de ideas para solucionar esto:

  1. Realice una solicitud GET con cada suscripción de .on("value") firebase. Omita la suscripción cuando sea una solicitud de procesamiento previo. Omita la solicitud GET cuando sea un usuario normal. Esto no funcionará para eventos .on("child_*") .
  2. Establezca la marca de preprocesamiento global en false en la parte superior de su archivo de entrada principal, luego, para cada componente de la página, establezca la marca en true una vez que se hayan cargado los datos. Con el diseño adecuado, generalmente hay un _estado de carga_ y un _estado de error_ y un _estado de éxito_, por lo que en el método auxiliar de estado de error / éxito establezca la bandera en true .

Es una molestia, pero solo unas pocas páginas dinámicas no se representan correctamente y necesitan un tratamiento especial. Sigo pensando que los beneficios estáticos superan los costos.

@mbleigh esperando con ansias lo que se les

Realmente esperando alguna solución. La única razón por la que necesito backend son también las tarjetas de Twitter y los gráficos abiertos. El backend seguro ofrece otros beneficios para las aplicaciones de una sola página, como la representación isomórfica, pero es bueno tenerlo. Las etiquetas de Twitter y OG son importantes para cualquier aplicación que necesite compartir.

¿Podría haber algún tipo de regla similar a la reescritura que ordenaría al backend de la base de fuego que sirva este o aquel objeto / html desde la base de datos?

Dicho objeto podría prepararse con anticipación ya que cada intercambio comienza desde, bueno, visitando la URL o pasando un botón Compartir primero.

bump ... Me sorprendió Firebase y luego me di cuenta de que no podía usarlo, leyendo estos comentarios ...
Como también necesito un servicio similar a Prerender para funcionar. Entonces, ¿qué pasa con el desarrollo en esto?

¡Consígalo juntos Google! ¡¡Eres un motor de búsqueda gratuito !! : riendo:

Hablando en serio. Esto es tan importante. Esto podría ser lo más importante de todos los tiempos.

Sé que fue una broma, pero para aclarar algo, ¿ese comentario estaría dirigido a la Búsqueda de Google o a Google Firebase? Solo uno de ellos es un motor de búsqueda y solo uno de ellos proporciona Firebase Hosting (y la precompilación de páginas web no es exactamente el ámbito de ninguno de ellos, aunque es un claro valor agregado para que Hosting funcione mejor con herramientas que brindan esto).

En una nota de limpieza relacionada, tampoco está relacionado con las herramientas de base de fuego (es decir, este rastreador de problemas de OSS). Me ocuparé de asegurarme de que su voto se agregue a la discusión de prioridades; la lista de correo es probablemente el mejor lugar para comunicarse con las solicitudes de funciones principales en el futuro.

Lo más importante es que no lo hemos olvidado. Sigue siendo muy importante para nosotros. Un poco menos importante que integrarse con Google Cloud Functions y proporcionar información sólida a través de Analytics, Crash Reporting y Test Labs, pero sigue siendo importante.

Volveré a mencionar esto la próxima vez que discutamos las prioridades. Realmente apreciamos que haya agregado su voz a los comentarios. ☼☼☼

gracias por sus esfuerzos en firebase @katowulf !!
Esto es lo único que me impide usar firebase como "host" para mis aplicaciones ng1.

No estás solo aquí. Otros se han topado con la misma limitación. Tenga en cuenta que dado que Google ahora puede indexar contenido generado por JavaScript, y existen algunas disposiciones especiales para indexar el contenido de Firebase, los datos de Firebase no autenticados cargados en sus páginas ya deberían estar indexados. Pero el soporte completo del precompilador está en el radar.

@katowulf solo como aviso (si aún no lo sabía o no lo vio), pero el problema principal no es el rastreador de Google. Creo que la gente ya lo sabe si usa algo como Prerender. Son los otros rastreadores como por ejemplo LinkedIn, Facebook, Twitter y más los que no están satisfechos. Quieren contenido estático

@samvloeberghs Creo, sin embargo, que las implicaciones de que Google

Es poco probable que FB / LinkedIn / Twitter sigan la capacidad de Google para avanzar rápidamente como quisiéramos. Siempre habrá un jugador importante detrás, y simplemente no podemos ignorarlo. Por otro lado, Google está resolviendo el problema trabajando en NG2, que contará con la compilación del lado del servidor usando Angular Universal :) 👍

Angular al rescate! Espera, ¿estás diciendo que el aprendizaje automático no resolverá todo esto?

Para ofrecer mis 2 centavos, descubro que los clientes parecen valorar las tarjetas de redes sociales al menos tanto como el SEO. Hablando de proyectos recientes, Twitter / Facebook han sido la principal forma en que las marcas se promocionan a sí mismas mediante el intercambio de enlaces a su sitio web.

Obviamente, el SEO sigue siendo fundamental, pero ¿atacar las tarjetas de redes sociales sería una solución más simple / a corto plazo? Dado que las tarjetas web son solo metaetiquetas, ¿podría definir la estructura en firebase.json (similar a las reglas de seguridad)? Luego, Firebase podría inyectar las metaetiquetas correctas para los rastreadores de Twitter / Facebook, aunque estoy seguro de que no es tan simple 😄.

Independientemente, muchas gracias por el gran trabajo y el apoyo de la comunidad. Esperamos algunas de las funciones de base de fuego más interesantes (¡funciones en la nube 👍!).

@katowulf , mi comentario fue un fuerte 'golpe' más que nada ... ¡ustedes están haciendo un trabajo increíble! Dirijo mi broma más hacia Google en su conjunto. Sin embargo, creo que Firebase es la nueva * división de Google que debería ser dueña de todo este problema de "SPA / PWA - Representación de páginas SEO".

Mis pensamientos sobre esto son ...

Cualquier producto que Google lanza al mundo debería funcionar perfectamente con todas las plataformas que usamos hoy en día, y ser ejemplos brillantes que funcionen y reflejen su producto original, la Búsqueda de Google.

Los SPA han existido por un tiempo. Google tiene 2 de ellos [Angular] y [Polymer]. La implementación de SEO en ellos (Meta Tags / OpenGraph / Schema) es una de las principales Blackbox (a menos que seas un ninja backend). Fue una gran noticia que Google Search comenzara a procesar JS, pero esto definitivamente es solo la mitad de la batalla (tal vez menos).

Firebase, al ser un backend como servicio (BaaS), parece el nuevo y perfecto grupo de Google * para suavizar todo este proceso de renderización de la página SPA. Sé que ustedes lo harán, pero creo que esto debería pertenecer como una característica crítica / de máxima prioridad.

Imagínese leyendo este titular ...

REGALOS FIREBASE ...
SEO nuevo y mejorado para todas las aplicaciones de una sola página (SPA) y aplicaciones web progresivas (PWA) listas para usar.

Los desarrolladores acudirían en masa: +1:

Solo quería decir rápidamente que definitivamente tenemos esto en nuestro radar. Es importante, pero también lo son muchas otras cosas (como enumeró Kato). Tenemos algunas ideas sobre algunas formas excelentes de abordar este problema, pero tienen algunas dependencias que tenemos que eliminar primero. ¡Trate de ser paciente y sepa que definitivamente esto está en nuestras mentes!

Bueno, esto es decepcionante. Ahora me encuentro buscando alternativas de base de fuego ...

Han pasado casi 3 años ...

Algún avance en esto.. ?

¿No debería funcionar esto ahora que firebase posee divshot? actualizar PLZ!

Somos muy conscientes del deseo de este tipo de funcionalidad, y para nosotros es una prioridad ofrecer mejores soluciones aquí. Todavía no tengo ningún tipo de calendario para anunciar, pero no nos hemos olvidado de ustedes.

+1

:( :( :(

Llegamos a una conclusión similar. ¿Qué más has visto? ;)

Solo uso Firebase Functions como mi punto final de enlace compartido y luego redirecciono con JavaScript y un enlace.

Puede que hayas visto esto o no, ¡pero Cloud Functions ahora está integrado con Firebase Hosting !

Esto puede considerarse nuestra solución canónica para la renderización del lado del servidor con Firebase Hosting. ¡Disfrutar!

@mbleigh OK, así que si tengo un archivo de encabezado global con metadatos como el que se muestra a continuación, en la actualidad esto no se replica en la interfaz. Si instalo las funciones de la nube, debería ser todo lo que necesito para activar esta función.

<meta name="description" content="{{ pageDescription }}">

Impresionante, gracias por la actualización.

El 17 de mayo de 2017 a las 5:39 p.m., "Michael Bleigh" [email protected] escribió:

Puede que hayas visto esto o no, pero Cloud Functions ahora está integrado
con Firebase Hosting https://firebase.google.com/docs/hosting/functions
!!!

Esto puede considerarse nuestra solución canónica para la representación del lado del servidor.
con Firebase Hosting. ¡Disfrutar!

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-302268864 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbtWCdygdw4ozixK5_XcL2Dlznp4Jks5r65M-gaJpZM4CtPYG
.

Me doy cuenta de que puede que este no sea el mejor problema para estos comentarios, pero la búsqueda en Google de mis problemas me llevó a él y parece que hay una discusión activa, ¡así que por favor perdóneme!

Lo que me encantaría ver para resolver el problema de representar plantillas de gráficos abiertos para sitios sociales en SPA alojados en firebase es la capacidad de equilibrar la carga a través del agente de usuario.

Me gustaría poder usar las funciones de la nube para extraer algunos datos de la plantilla de memcache / cloudsql y representar las etiquetas de la plantilla en la plataforma social solicitante, pero recurrir al alojamiento estático para todos los demás clientes. Entonces no necesitaríamos una representación completa del lado del servidor para todas las solicitudes.

@cdharris Totally, ATM, reescribiendo toda la solicitud a una función que intenté usar window.location para realizar la redirección adicional (para el cliente / visitante) al alojamiento estático, para mis propósitos de SEO no funcionó, tal vez para fines sociales lo haría.

@mbleigh, ¿hay alguna opción para reescribir la solicitud de los rastreadores / redes sociales para diferenciarlos de los clientes / visitantes? He probado con _escaped_fragment_ entre otras expresiones globales ... Nada = / Gracias de antemano

Tomar la decisión de qué devolver en una función de base de fuego puede funcionar. Podemos decir: ¿el req proviene de Facebot? Luego devuelva estas etiquetas de gráfico abiertas. Si no es así, devuelva index.html. Pero, ¿cómo devuelvo el maldito index.html de una función de base de fuego?

fs.readFileSync ('./ index.htm')

El 13 de septiembre de 2017 a las 4:34 a.m., "Birowsky" [email protected] escribió:

Tomar la decisión de contenido en una función de base de fuego puede funcionar. Podemos decir:
¿El req proviene de Facebot? Luego devuelva estas etiquetas de gráfico abiertas. Si no,
devuelve el index.html. Pero, ¿cómo devuelvo el maldito index.html de un
función de base de fuego?

-
Estás recibiendo esto porque comentaste.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329140134 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbrXQNbVMhRmeZQTbx3Z3vi0c1HXTks5sh728gaJpZM4CtPYG
.

@megamindbrian ¿ está implícito que las funciones tienen acceso a los archivos alojados? ¿Está documentado en alguna parte? ¡Gracias de todos modos!

Si. Así es como recuerdo usarlo, buena pregunta, trato de encontrar documentos.

El 13 de septiembre de 2017 a las 7:09 a.m., "Birowsky" [email protected] escribió:

@megamindbrian https://github.com/megamindbrian ¿ está implícito que el
las funciones tienen acceso a los archivos alojados? ¿Está documentado en alguna parte?
¡Gracias, de todos modos!

-
Estás recibiendo esto porque te mencionaron.

Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Aqui uno
https://stackoverflow.com/questions/42960506/how-can-i-read-and-write-to-firebase-storage-from-within-cloud-functions-for-fir

El 13 de septiembre de 2017 a las 7:09 a.m., "Birowsky" [email protected] escribió:

@megamindbrian https://github.com/megamindbrian ¿ está implícito que el
las funciones tienen acceso a los archivos alojados? ¿Está documentado en alguna parte?
¡Gracias, de todos modos!

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Este usa un directorio temporal pero creo que también funciona con archivos
que ha subido junto con su proyecto. Podría ser inmutable, por eso
el ejemplo es descargar el archivo para guardarlo en otro lugar
https://firebase.google.com/docs/storage/extend-with-functions

El 13 de septiembre de 2017 a las 7:12 a. M. , "Brian Cullinan"

Aquí uno https://stackoverflow.com/questions/42960506/how-can-i-
leer y escribir en firebase-storage-from-within-cloud-functions-for-fir

El 13 de septiembre de 2017 a las 7:09 a.m., "Birowsky" [email protected] escribió:

@megamindbrian https://github.com/megamindbrian ¿ está implícito que el
las funciones tienen acceso a los archivos alojados? ¿Está documentado en alguna parte?
¡Gracias, de todos modos!

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329179741 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbobjixHUterg61PAFmLc9v72C7kyks5sh-IogaJpZM4CtPYG
.

Lo siento, todavía no veo una introducción adecuada de cómo las funciones están conectadas conceptualmente a los archivos alojados. Si quiere explicarme, tengo algunos puntos para usted: https://stackoverflow.com/q/46192570/592641

Podía verme respondiendo eso con ejemplos de código, pero no estaba claro
que desde dentro de su función puede responder con contenido de un archivo en
¿tu proyecto? No es una redirección.
Buscaré más código.

El 13 de septiembre de 2017 a las 7:18 a. M., "Birowsky" [email protected] escribió:

Lo siento, todavía no veo una introducción adecuada de cómo son las funciones
conectado conceptualmente a los archivos alojados. Si te importa explicar, tengo
algunos puntos para ti: https://stackoverflow.com/q/46192570/592641

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329182385 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbnCSoaKUuVKUnfha5A-4K-p76kZ3ks5sh-QygaJpZM4CtPYG
.

@megamindbrian Acabo de probar fs.readFileSync('./index.html') pero, desafortunadamente, el archivo no está allí. También esperaba encontrar los archivos alojados en algún depósito de almacenamiento generado implícitamente, sin suerte. ¿Cómo procederías?

Si anida su directorio Hosting public dentro de su directorio functions , estará disponible allí.

@Birowsky Sí, así es como estoy leyendo un archivo desde una función en la nube, por ejemplo, index.js:

const page = fs.readFileSync(__dirname + '/facebook-meta.html').toString();

Pero si el diseño de su proyecto es:

project/
project/src (<- actual source of app)
project/functions ( <- firebase functions)
project/dist (<- build output)

Deberá copiar los archivos relevantes de / dist en / functions

Este problema tiene casi 3 años (hasta ahora) y todavía no hay suerte en este momento ????

Probablemente signifique que Google abandonará firebase en medio de admitir todos
nuestras aplicaciones.

Nuestra solución oficial para esta clase de problemas es usar Cloud Functions
para hacer la representación del lado del servidor para el contenido que debe ser visible para estática
rastreadores:

https://firebase.google.com/docs/hosting/functions

Esta es una solución más robusta y generalizada que permite todo tipo de
¡cosas geniales!

Si cree firmemente que todavía falta algo, por favor díganos
un caso de uso detallado para que podamos pensar en cómo abordarlo. :)

El jueves 14 de septiembre de 2017 a las 3:57 p.m. Brian Cullinan [email protected]
escribió:

Probablemente significa que Google abandonó la base de fuego en medio de apoyar a todos
nuestras aplicaciones.

El jueves 14 de septiembre de 2017 a las 3:52 p.m., tofanelli [email protected]
escribió:

Este problema tiene casi 3 años (hasta ahora) y todavía no hay suerte en este momento ????

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
<
https://github.com/firebase/firebase-tools/issues/33#issuecomment -329630338
,
o silenciar el hilo
<
https://github.com/notifications/unsubscribe-auth/AX5XbhBSDSl6TStSv7M02Dx0brb9MOPbks5sia44gaJpZM4CtPYG

.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329631266 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAD_iI6L-yu3RTECI88a2y_ZOzIxdDQks5sia9rgaJpZM4CtPYG
.

@mbleigh ¿Puedes usar funciones en la nube en la raíz de un dominio de base de fuego, todavía?

Sí, si te entiendo bien. ¿Has tenido problemas antes?

El jueves 14 de septiembre de 2017 a las 6:38 p.m. Brian Cullinan [email protected]
escribió:

@mbleigh https://github.com/mbleigh ¿Puede usar las funciones de la nube en un
directorio raíz de firebase todavía?

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-329653711 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAAD_g7BV3TMM_5nVX92_-3ai_mZHfHBks5sidUvgaJpZM4CtPYG
.

@mbleigh

¡Esta es una solución más robusta y generalizada que permite todo tipo de cosas interesantes!

SSR hace que nuestro sistema sea más complejo 😢
Creo que la reproducción previa es mejor no siempre, pero a menudo 💡
por ejemplo, Facebook OGP, Twitter Cards, SEO para usuarios que no son de Google

@mbleigh @megamindbrian Gracias por sus mensajes. He hecho mi hosting dirigiendo todas las solicitudes a mi función y respuesta index.html que está alojada en functions/build/index.html a los clientes. Pero no sé cómo confirmar si viene una solicitud de FaceBot. Intenté usar herramientas de depuración de Facebook para acceder a la URL de mi sitio web, supuse que se activaría la función de nube, pero no fue así. No estoy familiarizado con el desarrollo de back-end, ¿puedes darme alguna pista? Gracias.

Cuando use la herramienta de Facebook, asegúrese de usar el botón que dice algo
como "Obtener una copia nueva", cerca de la vista previa.

El martes 17 de octubre de 2017 a las 8:29 a.m., Jude [email protected] escribió:

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrian Gracias por sus mensajes. yo tengo
hice mi hosting dirigiendo todas las solicitudes a mi función y respuesta
index.html que está alojado en functions / build / index.html para los clientes. Pero
No sé cómo confirmar si viene una solicitud de FaceBot. Yo he tratado
usando herramientas de depuración de Facebook para acceder a la URL de mi sitio web, supuse que
La función de nube se activará, pero no fue así. No estoy familiarizado con
desarrollo de back-end, ¿puedes darme alguna pista? Gracias.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
AVISO DE CONFIDENCIALIDAD: El contenido de este mensaje de correo electrónico y cualquier
los anexos están destinados únicamente al destinatario y pueden contener
información confidencial y / o privilegiada y puede estar protegida legalmente
de la divulgación. Luego se comparte con empresas de tecnología, bots, piratas informáticos,
agencias gubernamentales y comercializadores. La seguridad de este mensaje es nula,
y se puede compartir en Instagram en cualquier momento. Si está de acuerdo con esto,
por favor responde. Realmente no hay seguridad ni privacidad en ninguna parte. Si
no está de acuerdo, puede que desee ir de campamento y hablar con la gente cara a cara
como en los viejos tiempos.

¿Hay algo en los registros de tu base de fuego como "Se inició la ejecución de la función"?

El martes 17 de octubre de 2017 a las 8:37 a.m., Brian Cullinan [email protected]
escribió:

Cuando use la herramienta de Facebook, asegúrese de usar el botón que dice
algo como "Obtener una copia nueva", cerca de la vista previa.

El martes 17 de octubre de 2017 a las 8:29 a.m., Jude [email protected] escribió:

@mbleigh https://github.com/mbleigh @megamindbrian
https://github.com/megamindbrian Gracias por sus mensajes. yo tengo
hice mi hosting dirigiendo todas las solicitudes a mi función y respuesta
index.html que está alojado en functions / build / index.html para los clientes. Pero
No sé cómo confirmar si viene una solicitud de FaceBot. Yo he tratado
usando herramientas de depuración de Facebook para acceder a la URL de mi sitio web, supuse que
La función de nube se activará, pero no fue así. No estoy familiarizado con
desarrollo de back-end, ¿puedes darme alguna pista? Gracias.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-337266581 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbrCQ3mowcUnJjWYWsaiScoN1y4l0ks5stMfcgaJpZM4CtPYG
.

-
AVISO DE CONFIDENCIALIDAD: El contenido de este mensaje de correo electrónico y cualquier
los anexos están destinados únicamente al destinatario y pueden contener
información confidencial y / o privilegiada y puede estar protegida legalmente
de la divulgación. Luego se comparte con empresas de tecnología, bots, piratas informáticos,
agencias gubernamentales y comercializadores. La seguridad de este mensaje es nula,
y se puede compartir en Instagram en cualquier momento. Si está de acuerdo con esto,
por favor responde. Realmente no hay seguridad ni privacidad en ninguna parte. Si
no está de acuerdo, puede que desee ir de campamento y hablar con la gente cara a cara
como en los viejos tiempos.

-
AVISO DE CONFIDENCIALIDAD: El contenido de este mensaje de correo electrónico y cualquier
los anexos están destinados únicamente al destinatario y pueden contener
información confidencial y / o privilegiada y puede estar protegida legalmente
de la divulgación. Luego se comparte con empresas de tecnología, bots, piratas informáticos,
agencias gubernamentales y comercializadores. La seguridad de este mensaje es nula,
y se puede compartir en Instagram en cualquier momento. Si está de acuerdo con esto,
por favor responde. Realmente no hay seguridad ni privacidad en ninguna parte. Si
no está de acuerdo, puede que desee ir de campamento y hablar con la gente cara a cara
como en los viejos tiempos.

@megamindbrian La función se activó si

@judewang echa un vistazo a https://firebase.google.com/docs/hosting/functions#when_is_cached_content_served

Para una prueba rápida y sucia, puede intentar agregar algún parámetro de consulta aleatorio a la URL probada.

Entonces, la pregunta inicial fue cómo usar la preproducción. Esta solución no resuelve el problema de integración de preprocesamiento, pero resuelve el gráfico abierto para una aplicación de una sola página.

  1. En mi script de compilación, copio public/index.html a functions/hosting/index.html
  2. En firebase.json agrego una regla de reescritura para apuntar a una función en la nube llamada "host"
"hosting": {
    "public": "dist",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "host"
      }
    ]
  }
  1. Defino una función en la nube llamada host . En la mayoría de los casos, esto solo devuelve el archivo index.html que copié en functions/hosting/index.html , pero si el agente es uno de los analizadores de gráficos abiertos conocidos, devuelvo los datos de la base de datos en formato de gráfico abierto basado en el ruta.
exports.host = functions.https.onRequest((req, res) => {
  var userAgent = req.headers['user-agent'];
  if (userAgent.startsWith('facebookexternalhit/1.1') ||
    userAgent === 'Facebot' ||
    userAgent.startsWith('Twitterbot')){

    //getOpenGraph() parses the path, and gets some data from the firebase database to construct open graph data.
    // eg: <meta property="og:description" content="My super cool webpage." /> <meta property="og:title"...

    res.status(200).send(getOpenGraph(req.path));
  }
  else{
    //optional - turn on caching: res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
    res.status(200).send(fs.readFileSync('./hosting/index.html').toString());
  }
});

Creo que eso es todo. ¡Espero que esto ayude a algunas personas!

Debo decir que esto es decepcionante, los competidores más nuevos lo tienen, como https://www.netlify.com/features/ , que definitivamente lo hacen más atractivo para las aplicaciones web que necesitan la integración SEO / Social.

Firebase lo está matando para dispositivos móviles / react native, y realmente lo estoy disfrutando como plataforma en general, pero esta es una falla bastante grande para las aplicaciones web, en mi opinión.

En general, hemos descubierto que el contenido que necesita procesamiento previo también es contenido que se sirve mejor mediante el procesamiento del lado del servidor (por razones de rendimiento y primera carga). La reproducción previa genérica no está en nuestra hoja de ruta inmediata por esta razón.

Dicho esto, estamos escuchando los comentarios sobre el deseo de que la integración de funciones sea más flexible para permitir la ejecución de funciones "a veces". Dado que Firebase Hosting depende en gran medida del almacenamiento en caché de CDN, este tipo de flexibilidad es técnicamente difícil de lograr para nosotros. Continuaremos escuchando los comentarios e intentaremos encontrar formas de mejorar la plataforma para su caso de uso. :sonreír:

Una interfaz de usuario en Firebase para conectar funciones directamente al frente de un dominio
nombre arreglaría mi caso de uso.

https: //us-central1-...dsaflk; sdafkljsdafkl; jsdf;
lkjsadfkljasdfkljsdaflk.cloudfunctions.net

El viernes 5 de enero de 2018 a las 3:33 p.m., Michael Bleigh [email protected]
escribió:

En general, hemos descubierto que el contenido que necesita una reproducción previa también
contenido que se sirve mejor mediante la representación del lado del servidor (para rendimiento y
razones de la primera carga). La reproducción previa genérica no está en nuestra hoja de ruta inmediata
por esta razón.

Dicho esto, estamos escuchando los comentarios sobre el deseo de
integración de funciones para ser más flexible para permitir la función "a veces"
ejecución. Dado que Firebase Hosting se basa en gran medida en el almacenamiento en caché de CDN de este tipo
de flexibilidad es difícil de lograr técnicamente para nosotros. Continuaremos
escuchar los comentarios y tratar de encontrar formas de mejorar la plataforma para
su caso de uso. 😄

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/firebase/firebase-tools/issues/33#issuecomment-355683821 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AX5XbtVDQSPOIAZFyozujQQUektf2WM1ks5tHqM8gaJpZM4CtPYG
.

-
"Estudié ingeniería"

AVISO DE CONFIDENCIALIDAD: El contenido de este mensaje de correo electrónico y cualquier
los anexos están destinados únicamente al destinatario y pueden contener
información confidencial y / o privilegiada y puede estar protegida legalmente
de la divulgación. Luego se comparte con empresas de tecnología, bots, piratas informáticos,
agencias gubernamentales y comercializadores. La seguridad de este mensaje es nula,
y se puede compartir en Instagram en cualquier momento. Si está de acuerdo con esto,
por favor responde. Realmente no hay seguridad ni privacidad en ninguna parte. Si
no está de acuerdo, puede que desee ir de campamento y hablar con la gente cara a cara
como en los viejos tiempos.

@mbleigh, ¿no es este punto de vista algo opuesto al espíritu de sin servidor y al uso de un proveedor BaaS / FaaS como firebase? Con la tendencia hacia los SPA en los últimos años, este es un caso de uso bastante común, tanto que ha sido abordado por competidores como netlify y roast, por ejemplo. Si bien son más pequeños, para alojar esto tiene sentido, ya que proporciona tiempos de carga más rápidos, junto con una capacidad de descubrimiento y compartición crítica.

En lugar de agregar una sobrecarga adicional de desarrollo y mantenimiento para los clientes, un servicio de prerenderización opcional o al menos, la capacidad de integrarse con un servicio de terceros como prerender.io sería una gran mejora.

Firebase es realmente una gran plataforma, pero parece más orientada a dispositivos móviles, y el hosting es la única parte mediocre para mí.

Gracias por la pronta respuesta.

@mbleigh

En general, hemos descubierto que el contenido que necesita procesamiento previo también es contenido que se sirve mejor mediante el procesamiento del lado del servidor (por razones de rendimiento y primera carga).

Aparte del argumento acertado de

Las aplicaciones de una sola página o secciones de aplicaciones tienen que recurrir a cierto grado de representación del lado del cliente y, lamentablemente, los rastreadores, incluido el de Google, aún no son muy buenos para indexar dichas páginas. Tuve que recurrir a PrerenderIO después de meses de intentos fallidos de permitir que Google indexara mis sitios web correctamente, algo que me obligó a mantener un enfoque basado en el servidor express.js, __ solo por el problema de indexación__.

Piense en un sitio web que tiene una página /product/**.html que muestra CUALQUIER producto dependiendo de la URL profunda detectada por el lado del cliente. La razón detrás de este diseño es que cargar una página separada real para un producto, incluso teniendo en cuenta el navegador y el almacenamiento en caché de cdn, no es tan sencillo desde la perspectiva de UX como cargar los datos de otro producto y renderizarlos mientras se cambia la URL. Los clientes pasan la mayor parte de su tiempo en las páginas de productos cuando navegan para comprar mientras están en un sitio web de comercio electrónico y, a menudo, navegan a otros productos a través de enlaces de "productos relacionados" o enlaces de búsqueda ajax en la página.

Estamos atascados con el absurdo (en mi humilde opinión) _escaped_fragment_ mecanismo para que no seamos penalizados por encubrimiento ... ¿Google está encontrando difícil contratar ingenieros con soluciones ordenadas para este problema omnipresente?

Encuentro incluso la ausencia total de una sección de indexación de sitios web / aplicaciones web en la documentación __injustificable__.
Las aplicaciones móviles pueden dominar el mercado de consumo, pero ¿qué hay de B2B? La mayoría de los departamentos de oficina operan en computadoras de escritorio. Indexar sitios web de escritorio para llegar a los departamentos de I + D o de compras no es "agradable", es fundamental para las empresas de proveedores B2B.

Si Firebase / Google no están interesados ​​en esto porque las aplicaciones llamativas que se ejecutan en dispositivos brillantes generan más ingresos, sería bueno saberlo; Cuatro años de dar respuestas evasivas a los usuarios leales de la tecnología son bastante insultantes para la inteligencia de cualquiera.

Ranty? Sí, pero soy yo quien tiene que justificar los costos de infraestructura adicionales, los tiempos de desarrollo adicionales y los comportamientos inesperados de los rastreadores para mis clientes.

cuatro años de este tema abierto parece un poco tonto. @cleverplatypus : no podría estar más de acuerdo con tus sentimientos.

Esta área problemática en general no es algo en lo que hayamos dejado de pensar, pero aún no tenemos planes inmediatos para la reproducción previa de fragmentos escapados.

Reconozco que definitivamente hay ocasiones en las que una aplicación estática de una sola página puede beneficiarse de la reproducción previa; sin embargo, sigo creyendo que en la mayoría de los casos (pero no en todos) de estos tipos de sitios se encuentran mejor atendidos por la representación del lado del servidor que puede iniciar el SPA desde cualquier URL.

Nuestro objetivo es hacer de Firebase Hosting una plataforma fantástica para ofrecer todo tipo de experiencias web. Si bien aprecio los comentarios francos y apasionados proporcionados en este hilo, tenemos recursos limitados y debemos priorizar el trabajo que creemos que tendrá el mayor impacto para nuestra base de clientes en general. Si desea ayudarnos a cambiar de opinión acerca de la priorización de una función que le interesa, la mejor manera es presentar una solicitud de función ; estas se contabilizan y nos ayudan a guiarnos hacia el trabajo que exige nuestra comunidad de desarrolladores.

Voy a cerrar este hilo ya que no creo que realmente quede ningún lugar para que la conversación continúe, pero animo a cualquiera que no esté bien atendido por nuestra integración de Cloud Functions a presentar una solicitud de función para preprocesamiento para que ¡Podemos ver directamente qué tan grande es la demanda!

Gracias por usar Firebase Hosting, todos 😸

¿Fue útil esta página
0 / 5 - 0 calificaciones