Cuando se trata de sitios de WordPress, no todos ellos pueden estar tratados de la misma forma en términos de mejor funcionamiento para un buen desempeño. Un sitio simple de cinco páginas en WordPress se comporta de forma muy distinta que un gran sitio de WooCommerce (el cual puede ser muy demandante). Los sitios de membresía y de comunidad de WordPress son otro tipo que entra en lo que a veces se conoce como la categoría “complicada”. Si no se establece de forma correcta, pronto se encontrará con una pesadilla de errores 500, tiempo perdido y cargas de páginas muy lentas. Pero esto no quiere decir que no tiene opciones, solo tiene que seguir las mejores prácticas.
Hoy exploraremos algunas de las cosas que se deben hacer o no hacer en sitios de membresía de WordPress y como optimizarlos de la mejor forma, para obtener un desempeño óptimo, escalabilidad y longevidad. 🚀
- Ejemplos de Sitios de Membresía
- ¿Por Qué los Sitios de Membresía de WordPress Son Diferentes?
- Lo Que Se Debe Hacer en los Sitios de Membresía de WordPress
- Lo Que No Se Debe Hacer en los Sitios de Membresía de WordPress
Ejemplos de Sitios de Membresía
Aquí hay algunos ejemplos de algunos sitios de membresía y de comunidad de WordPress:
- Un sitio construido alrededor de un Sistema de Administración de Aprendizaje (LearnDash, Lifter LMS) el cual vende cursos digitales a sus miembros. Estos se están volviendo muy populares últimamente y hay algunos grandes plugins deLMS por ahí!
- Un foro basado (bbPress o BuddyPress) en un sitio de WordPress, principalmente usado por miembros para discutir diferentes temas.
- Un sitio de membresía construido en alguno de los plugins externos de membresía, todo en uno, más populares (MemberPress o Ultimate Membership Pro).
- Un sitio de comunidad enfocado en una red social (PeepSo).
- Algunos podrían incluir soluciones de eCommerce, como WooCommerce y Easy Digital Downloads como sitios de membresía, ya que muchos de estos tienen perfiles de usuario y opciones de comunidad.
¿Por Qué los Sitios de Membresía de WordPress Son Diferentes?
Antes de comenzar a explicar sobre lo que se debe hacer o no hacer, primero adentrémonos y hablemos de algunas de las razones por las cuales los sitios de membresía de WordPress son diferentes a sus páginas de blog estándares o sitios de negocios pequeños.
1. Contenido No Cacheable
Antes que nada, los sitios de membresía tienen contenido que no se puede guardar en la cache y las páginas siempre están cambiando. Las cosas, como la página de inicio de sesión para los miembros de la comunidad (la cual podría estar siendo usada de forma constante, dependiendo del tamaño del sitio), las páginas de pago para bienes o cursos digitales, y páginas de discusión son culpables conocidos y puntos de dolor, ya que estos típicamente no pueden ser almacenados en la cache.
Sin embargo, no termina ahí. En sitios estándar de WordPress, el dashboard de WordPress tampoco es almacenado en la cache para los usuarios “conectados”. Esto funciona cuando tienes a un bajo número de autores y administradores, pero cuando de repente tiene a miles de miembros usando el dashboard, esto inmediatamente causa problemas de desempeño ya que ni uno puede servirse de la cache en el servidor. Esto quiere decir que necesita poder y arquitectura detrás de las escenas para respaldarlo. Los proveedores de hosting compartidos usualmente se desmoronan bajo estas circunstancias.
En la herramienta MyKinsta analytics que proveemos para los clientes de hosting, podrá ver cómo es el estado del contenido cacheado está. A continuación, veremos un ejemplo de un sitio donde la gran mayoría de las peticiones no están siendo servidas desde la cache.
2. Un Gran Número de Visitantes Concurrentes
El segundo problema que los sitios de membresía típicamente tienen es un gran número de visitantes y sesiones concurrentes. En un sitio informacional o un sitio corporativo de WordPress, un visitante puede quedarse por cinco o 10 minutos, hasta que encuentren lo que necesitan (y ese es un número alto, usualmente los números de rebote son mucho mayores). En sitios de membresía, lo opuesto sucede. Los visitantes típicamente llegan al sitio para involucrarse con algo o alguien. Si están asistiendo a un curso en línea, no es inusual que pasen horas ahí. ¿Ahora entiende a donde va todo esto? Los visitantes concurrentes conectados a su host de WordPress se van acumulando rápidamente.
Para hacerlo aún peor, luego tendrá un gran número de visitantes concurrentes encima de los problemas del “contenido que no puede ser almacenado en la cache”.
3.Consultas Complejas
Tercero, los sitios de membresía usualmente generan consultas más complejas, que, a su vez, agregan latencia adicional al recuperar la información . Mucho de esto es simplemente debido a las partes móviles adicionales y a las grandes cantidades de datos de los sitios como los que tienen. Esto también puede ser causado por sitios que dependen de consultas de búsqueda para la navegación el uso WP_Query
Cabe mencionar, que también tiene una gran cantidad de usuarios concurrentes continuamente consultando a su base de datos.
4. Almacenamiento de Muchos Datos
No es sorprendente, pero los sitios de membresía almacenan muchos datos y si no son administrados de forma correcta (hablaremos más de eso más adelante), el espacio en disco se irá acabando muy rápidamente. Esto se va juntando a lo largo del tiempo de vida del sitio. Los videos, cursos, información de membresía y de perfil, discusiones, descargas digitales, etc. Estos son algunas de los muchos tipos de contenido diferente que se va acumulando de forma rápida.
Lo Que Se Debe Hacer en los Sitios de Membresía de WordPress
En Kinsta alojamos a muchos sitios de membresía y nuestros ingenieros, constantemente, interactúan con los dueños de estos sitios a diario. Mientras que siempre fomentamos que los usuarios implementen las mejores prácticas de desempeño para la red, estos, típicamente no son suficientes, cuando se trata de este tipo de sitios. Así que hoy les mostraremos algunas formas extras para asegurar que el sitio de membresía y sus visitantes tengan la mejor experiencia posible.
1. Elija un Host de WordPress Enfocado en el Desempeño
Aconsejarle que consiga un mejor host de WordPress puede que ya suene a disco rayado, pero la verdad es que, muchos de los problemas de desempeño con los sitios de membresía pueden ser causados por esto. Hemos visto en muchas ocasiones, a clientes migrar a Kinsta de otros proveedores e inmediatamente ver mejoras drásticas. Nuestra compañía completa, desde la infraestructura que colocamos para respaldar a nuestros sitios, hasta los ingenieros que contratamos, están enfocados en desempeño. Esto no ha cambiado y jamás cambiará.
Quite impressed what @googlecloud and @kinsta can pull of for #WordPress hosting! #DevOps #Cloud #WPDev #webdevelopment pic.twitter.com/Cr7UMaHdpH
— Neuralab (@Neuralab) July 22, 2017
¿Cómo Kinsta Incrementa la Velocidad de los Sitios de Membresía?
Kinsta fue el primer host de WordPress gestionado para usar de forma exclusiva el Google Cloud Platform. Ofrecemos 37 distintos centros de datos alrededor del mundo, esto quiere decir que puede elegir uno que se encuentre más cerca a sus visitantes para reducir la latencia y el TTFB. Mientras que otros hosts puede que usen la red de nivel estándar de Google (más lento y barato), nosotros utilizamos la red Premium de Google. Esto está diseñado para minimizar la distancia y saltos, obteniendo un transporte global más rápido y más seguro de sus datos.
Para hacer tu sitio de WordPress más seguro, también utilizamos el firewall de nivel empresarial de Google Cloud.. A diferencia de otros hosts que utilizan estrictamente cortafuegos basados en software a nivel de servidor web, nuestro cortafuegos principal se encuentra en el borde de la red de Google fuera de nuestra red de máquinas virtuales. Esto nos permite bloquear el tráfico malicioso conocido antes de que entre en nuestra red y reduce la carga de nuestros equilibradores de carga y de las máquinas virtuales.
Nuestra plataforma de hosting no entra a una de las categorías tradicionales de hosting, y es muy diferente a las infraestructuras tradicionales compartidas, VPS o dedicadas. Kinsta utiliza hosts administrados con LXD y contenedores de software LXC orquestador para cada sitio. Esto quiere decir que cada sitio de membresía de WordPress está albergado en su propio contenedor aislado, que cuenta con todos los recursos de software requeridos para funcionar (Linux, Nginx, PHP, MySQL). Los recursos son 100% privados y no son compartidos con nadie más, incluso con ni uno de sus otros sitios.
Aquí en Kinsta, ponemos a disposición de todos nuestros clientes las máquinas virtuales optimizadas para computación C2 de Google Cloud. La familia de máquinas C2 está equipada con los últimos procesadores escalables de Intel Xeon capaces de operar a 3.8 GHz con un turbo sostenido. Con las máquinas C2 de alto rendimiento que alimentan tu sitio de membresía de WordPress, las frecuentes solicitudes no almacenadas en caché y las consultas a la base de datos podrán ejecutarse más rápido, lo que resultará en una mejor experiencia para tus visitantes.
Cada sitio de afiliación también puede aprovechar nuestra infraestructura escalable para manejar mejor los aumentos repentinos de tráfico y carga. Esto le permite hacer crecer su sitio de membresía de WordPress sin tener que preocuparse por las restricciones comunes y los límites estrictos que aplican otros proveedores de hosting.
Lea más sobre por qué Kinsta es diferente.
2. Aprovecha las ventajas de PHP 8.1
No nos cansaremos de repetir lo importante que es utilizar una de las últimas versiones de PHP, preferiblemente PHP 8.1. Para muchos sitios, esto no requiere ningún trabajo y es una mejora gratuita e instantánea del rendimiento.
PHP 7.4 ya no está soportado en Kinsta. Ten en cuenta que soportamos versiones de PHP 7.4, 8.0, 8.1, 8.2 y 8.3.
Publicamos nuestros benchmarks de rendimiento PHP en los que probamos PHP 7.2, 7.3, 7.4, 8.0, y 8.1. Como puedes ver a continuación, en un sitio de WooCommerce, ¡PHP 8.0 se lleva la palma en cuanto al rendimiento más rápido! 🍰 y 8.1 fue aún más rápido.
También probamos Easy Digital Downloads y, de nuevo, PHP 8.0 superó al resto.
Si tu actual alojamiento de WordPress no soporta PHP 8.0 o superior, quizás sea el momento de buscar un nuevo alojamiento. Kinsta ofrece y soporta versiones de PHP 7.4, 8.0, 8.1, 8.2 y 8.3. Puedes cambiar fácilmente entre ellas en el panel de control de MyKinsta con un solo clic.
Si tu sitio de membresía tiene problemas de compatibilidad con la última versión de PHP, entonces probablemente es hora de preguntar al desarrollador del plugin o tema por qué se están quedando atrás o contratar a tu propio desarrollador de WordPress para solucionar el problema. No debes renunciar a las mejoras de rendimiento de PHP 8 y versiones superiores.
3. Use Cache de Objeto
La cache hace que los sitios corran más rápido y reduce la carga en el servidor de la red. Sin importar que use un plugin para hacer la cache o tiene un host administrado como Kinsta que tiene una cache a nivel de servidor implementada, esto es algo que ya debería estar haciendo. Sin embargo, cuando se trata de los sitios de membresía de WordPress, las opciones de cache comunes, usualmente no son suficientes, ya que no toman ventaja de la misma. Aquí es donde viene muy útil la cache de objeto.
La cache de objeto almacena los resultados de las consultas de la base de datos, para que si la próxima vez, fuera requerido ese pedacito de dato en particular, pueda ser enviado desde la cache sin necesidad de consultar a la base de datos. Esto acelera los tiempos de ejecución de PHP y reduce la carga en su base de datos. ¡Esto se vuelve extremadamente importante con los sitios de membresía! Con WordPress, puede implementar la cache de objeto de estas formas:
- Una solución de caché de terceros como W3 Total Cache
- Redis (recomendada)
- Memcached
Ofrecemos Redis como un add-on para Kinsta para que pueda sacar provecho de la cache de objeto persistente para sus sitios de membresía. La buena noticia es que una vez que esté configurado, aún puede usar la opción de limpiar cache agregada al área de administración de su sitio web por el Kinsta MU Plugin. Este botón limpiará la cache de su página y la cache activa en el sitio.
En algunos casos, también podemos hacer cachear a una página en especifico o una URL para usuarios conectados. Sin embargo, primero necesitará conversar con nuestro equipo de soporte sobre esto, ya que es importante que usted entienda todas las ramificaciones al permitir esto.
4. Mejore Su Búsqueda de WordPress
Mientras que los sitios de membresía están en crecimiento, probablemente descubrirá que la funcionalidad de la búsqueda estándar de WordPress no será suficiente. Los sitios que usan mucho el WP_Query, usan la búsqueda como su principal forma de navegación, o incluso un sitio con un gran número de artículos puede encontrarse con problemas de desempeño, mientras que los tiempos de consulta de la búsqueda empiezan a amontonar. Aquí es cuando un motor de búsqueda, como Elasticsearch, puede ayudar.
Elasticsearch puede ser usado para acelerar la consulta de la base de datos de WordPress. Esto se hace construyendo un índice del contenido de la base de datos de su sitio y luego usando Elasticsearch para buscar este índice mucho más rápido que una consulta MySQL.
5. Cree una Página 404 Light
Hemos visto de primera mano que los sitios de membresía, típicamente generan muchos errores 404. ¡Su sitio probablemente genera más de lo que piensa! Nuestras herramientas de MyKinsta analytics pueden ayudarle a determinar la cantidad exacta (como se ve a continuación).
También puede chequear los errores 404 en Google Search Console o si instala un plugin, como Redirection, el cual registra los errores 404. Sin embargo, recuerde que los plugins como este, también tienen un impacto en el desempeño. Es mucho mejor depender de una herramienta a nivel de servidor.
La razón por la que estos errores son malos, es porque muchas páginas 404 requieren muchos recursos. Para un sitio de membresía, es mejor evitar una página 404 muy cargada. Cree una plantilla simple de 404, que evite consultar a la base de datos constantemente, si es posible. Y por su puesto, tómese un tiempo para arreglar los errores 404 ya que esto no solo requiere muchos recursos, simplemente es malo para la experiencia del usuario.
Además de utilizar una página 404 ligera, también es una buena idea añadir una regla especial de caché de páginas para páginas 404. Si eres cliente de Kinsta, no tendrás que preocuparte por esto. Nuestra configuración de Nginx almacena páginas 404 durante 15 minutos. Si detectamos que se ha creado una nueva página con la misma URL que una página 404 en caché, purgaremos la caché según sea necesario. Si tu sitio de WordPress no tiene páginas 404 en caché, te recomendamos que trabajes con tu host para añadir esta capacidad a tu servidor web.
6. Incremente PHP Workers
Los PHP workers podrían ser un termino que jamás había escuchado, pero es la forma en que muchos hosts, incluyendo a Kinsta, lidian con las peticiones limitantes (en lugar de limitar su CPU o RAM, lo cual es típico de los proveedores de hosting compartidos).
Los PHP workers determinan cuantas peticiones simultáneas puede soportar al mismo tiempo su sitio. Para explicarlo de forma más sencilla, cada petición sin cache para su sitio web puede ser controlada por un PHP worker. Por ejemplo, si tiene 4 peticiones que vienen a su sitio al mismo tiempo, y su sitio tiene 2 PHP workers, dos de estas peticiones procederán, mientras que las otras dos tendrán que esperar en la fila, hasta que las primeras dos terminen de procesarse.
¿Recuerda cuando discutimos hace poco, de que uno de los grandes problemas de los sitios de membresía de WordPress son las peticiones no cacheables? Es por eso que los PHP workers se han vuelto muy importantes ya que tienen que trabajar por cada petición. Así que estos sitios típicamente requieren PHP workers adicionales, para asegurar que cada petición esté procesada sin retrasos y completada de forma exitosa.
¿Qué pasa cuando se llega al máximo de sus PHP workers continuamente? Básicamente, la fila empieza a empujar peticiones antiguas, las cuales podrían resultar en errores 500 en su sitio. Cada plan de hosting de Kinsta, incluye un número predefinido de PHP workers. Si tiene problemas para estimar lo que su sitio podría necesitar, esta guía será útil: recomendaciones de PHP para los sitios de membresía. Pero siempre puedes chatear con nuestro equipo de ventas o soporte también.
7. Mantenimiento Regular de la Base de Datos
El mantenimiento regular de la base de datos, no solo es recomendada para los sitios de membresía en WordPress, ¡Es requerido! Si no hace esto, un día se podría estar preguntando porque su sitio se ha alentado muchísimo. Aquí tenemos algunas recomendaciones:
Limpie los datos que se cargan automáticamente
Los datos que se cargan de forma automática son datos que se cargan en cada página de su sitio de WordPress. Estos datos son almacenados en su tabla de wp_options. En sitios más grandes, esta tabla puede empezar a crecer sin control. Chequee nuestro tutorial sobre cómo limpiar los datos de autocarga.
Limpie los Jobs Transitorios y CRON
Como con los datos de autocarga, se deberían limpiar de forma regular los transitorios también. Cuando funcionan correctamente, los transitorios propios funcionales, supuestamente deben expirar y removerse solos, pero no siempre es el caso. Si algo es configurado de forma incorrecta o incluso es corrupto, estos empiezan a acumularse.
Por ejemplo, tuvimos un cliente donde algo salió mal con transitorios que expiraron y bajó por mucho el desempeño del sitio. Después de investigar un poco, descubrimos que el sitio tenía 695,846 registros de transitorios (filas) en la base de datos. Después de borrar las filas (las cuales contienen transitorios que pudieron haber expirado), el sitio inmediatamente se recuperó (como se muestra a continuación).
Puede usar el plugin gratuito Transients Manager para ver, buscar, editar y borrar transitorios en su sitio de WordPress. Si es un poco más experto en tecnología, también puede usar los comandos de WP-CLI para eliminar los transitorios.
Los CRON Jobs (WP-Cron), que solían agendar tareas repetitivas para su sitio de WordPress, son también una razón más por las que podría estar viendo problemas similares. Puede usar el plugin gratuito WP Control para revisar y asegurarse de que los CRON Jobs no se estén saliendo de control.
Cambie el Motor de la Base de Datos a InnoDB
Por último, pero no menos importante, debe mover el motor de su base de datos a InnoDB si no lo ha hecho hasta ahora. Muchos sitios viejos siguen usando un motor de almacén MyISAM en su base de datos. En años recientes, InnoDB ha mostrado un mejor desempeño y se ha hecho más confiable. Una gran razón para utilizar InnoDB en lugar de MyISAM, es que nunca se encontrará con problemas que bloqueen todo a nivel de tabla. Esto le permite a sus consultas ser procesadas más rápido.
Chequee el tutorial sobre como convertir su base de datos (tablas) de MyISAM a InnoDB. Si usted migra a Kinsta y permite que nuestro equipo de ingeniería le ayude, automáticamente moveremos su motor de base de datos a InnoDB.
8. Descarga de Datos
Como hemos mencionado anteriormente, ¡los sitios de membresía simplemente tienen un montón de datos! Videos, PDFs, fotografías de alta resolución, documentos y archivos de audio que suelen ser los mayores culpables. Por lo tanto, podría necesitar encontrar una forma de traspasar esto a una solución de almacenado más barata. Esto puede ahorrarle mucho dinero, simplemente mejorando su plan de hosting. Cheque los siguientes artículos:
- Descarga de archivos PDF, DOCX, MP4 y MP3s
- Cómo trasladar archivos grandes a Amazon S3
- Como trasladar archivos de media al Google Cloud Storage
Lo Que No Se Debe Hacer en los Sitios de Membresía de WordPress
Aquí hay algunas cosas que no debería hacer en los sitios de membresía de WordPress
Aléjese de los Contadores de Artículos
Nunca agregue contadores de visitas/posts a su sitio si no tiene que hacerlo. Por ejemplo, evite cosas como “792 posts” al lado del avatar de un usuario en los foros o “5,243 visitas” al listar posts de foros. Cuando tiene una larga discusión, estos contadores sobrecargarán su base de datos. En general, minimice el uso de contadores y solo úselos si es necesario.
Esto también aplica para contadores sociales. Considere que en el blog de Kinsta sí usamos estos, pero en ningún otro lado en nuestro sitio. Pero nuestro plugin también tiene una cache integrada, esto asegura que no estén generando consultas en cada carga de página.
Evite los Constructores de Página
Los constructores de página son buenos para muchas personas, de hecho, incluso tenemos una lista completa de los que puede usar en su sitio. Sin embargo, la mayoría de estos (no todos) tienen problemas de desempeño, ya que generan código adicional innecesario para lograr que la página se visualice de una forma en la que el usuario todavía pueda construirla sin saber programar. Si puede, construya las plantillas de su página manualmente y siempre hágalas lo más livianas posibles.
Por ejemplo, nuestro sitio de Kinsta (como se muestra abajo) está en WordPress, pero el tema entero, realmente está programado por el desarrollador del equipo. Esto nos ayuda a reducir un poco la sobrecarga que los temas típicos de WordPress usualmente tienen, pero nos permite tomar ventaja de toda esta sorprendente funcionalidad. Echa un vistazo a esta colección si buscas los mejores temas de membresía de WordPress. De nuevo, hay miles de desarrolladores talentosos de WordPress y hay muchos diseñadores disponibles si necesita ayuda.
No Use Demasiados Plugins
Sabemos que ya ha escuchado esto antes. La verdad es, la calidad del código de un plugin es más importante que el número total de plugins que tiene instalado. Sin embargo, habiendo dicho eso, cada uno seguirá teniendo un “costo de desempeño”. Si ya no usa las características de algunos plugins, desactívelos o elimínelos de su sitio. No solo hará que solucionar los problemas sea mucho más sencillo sino que también reducirá el número de consultas en su sitio (en el backend y frontend).
Tenga Cuidado con las Integraciones Externas
Hay muchos CRM externos y plataformas de automatización que podría integrar con su sitio de membresía de WordPress. Sin embargo, tenga cuidado con estas, ya que algunas podrían introducir latencia y retrasos adicionales mientras se comunica con sus APIs, servicios, etc. Podría buscar soluciones integradas dentro de WordPress, como estas soluciones de CRM.
No para hacerlo más difícil, pero lo opuesto también podría ser cierto.. Si un CRM externo o una plataforma de automatización se está encargando de sus propias tareas, podría ayudar a tomar parte de la carga de su host de WordPress. Lo mejor que podría hacer es probar diferentes soluciones.
Recomendaciones Adicionales
Y por su puesto, no podemos dejar que se vaya sin mencionar algunas optimizaciones de velocidad comunes que debería estar haciendo:
- ¡Comprima sus imágenes! En Kinsta típicamente vemos 60-70% de ahorro dependiendo en el tipo de imágenes y el tipo de compresión usado. Recomendamos compresión con pérdida.
- Siempre use CDN. A pesar de usar 37 centros de datos disponibles a elegir de Kinsta, su servidor siempre estará lejos de por lo menos una persona. Una CDN puede arreglar esto, al copiar y entregar sus activos (imágenes, JS, CSS) de POPs alrededor del mundo. Nuestra CDN de Kinsta está incluida para los clientes.
- Piense dos veces antes de decidir administrar su propio VPS. Tratar de ser un administrador de sistemas para ahorrar $ 20 / mes es una mala idea.
Resumen
Los sitios de membresía y de comunidad de WordPress están definitivamente en su propia categoría cuando se trata de optimización. Usualmente requieren ir esa distancia extra si quiere un desempeño excelente. Pero la buena noticia, es que muchas de las soluciones que podrá encontrar pueden hacer maravillas. PHP 8.1, ELasticsearch, y Redis Object Caching son formas sencillas y efectivas de ver resultados instantáneos. Y por su puesto, tener un host enfocado en desempeño debe ser una prioridad principal. 😉
¿Tiene una página de membresía en WordPress? Nos encantaría escuchar sus reflexiones o los retos que se ha encontrado a lo largo del camino.
Deja una respuesta