¿Cómo mejorar el tiempo de respuesta del servidor?


17

¿Qué puedo hacer, aparte de usar un complemento de caché como jotcache, para mejorar el tiempo de respuesta del servidor de mi sitio web?

Ya he eliminado todos los módulos, complementos y componentes de artículos inactivos, ¿hay algo más que pueda hacer para mejorarlo?

Estoy hablando del tiempo antes de que el cliente (navegador) obtenga una respuesta a su solicitud . Y no el momento en que se carga la página.


Tiempo de respuesta es el tiempo antes de que el documento php ha terminado, por lo que desea mirar en SQL y PHP llamadas y luego preguntas cache HTML me gustaría sugerir
tristanbailey

Cuando dice tiempo de respuesta del servidor, ¿se refiere a la respuesta del servidor cuando se realiza la solicitud por primera vez o se refiere al tiempo que le toma al servidor preparar y servir la página? Ejecute su sitio a través de la prueba de velocidad Pingdom y publique los resultados para que podamos brindarle soluciones específicas al problema real.
Brent Fray

Respuestas:


25

Hay varios pasos que puede seguir para aumentar el rendimiento del lado del servidor. Tenga en cuenta que algunos de estos no funcionarán con la mayoría de los hosts compartidos. Para un gran rendimiento, generalmente necesita un control más detallado.

Al igual que con cualquier optimización, debe medir el efecto que tiene en el rendimiento de su sitio. Para las optimizaciones básicas, son útiles herramientas como PageSpeed e YSlow (recomiendo las versiones de Firefox). Para una comprensión más profunda, tendrá que medir los tiempos de respuesta reales de su sistema en vivo durante un período de tiempo.

PHP

  1. Habilitar almacenamiento en caché de código de operación

    Esto es probablemente lo más importante que puede hacer para aumentar el rendimiento de su sitio. Recomiendo usar OpCache o APC . La configuración de estos cachés se puede ajustar para un rendimiento aún mayor en función de las necesidades específicas de los servidores y sitios, pero la instalación ya es un gran impulso.

  2. Actualizar la versión de PHP

    La versión PHP más reciente viene regularmente con mejoras de rendimiento. Además, hay una serie de casos en los que Joomla puede usar un mejor código cuando se ejecuta en una versión PHP más nueva. A partir de hoy, no debería utilizar una versión de PHP anterior a PHP 5.4 si le preocupa el rendimiento.

  3. Configuraciones PHP

    En versiones anteriores de PHP (<= 5.3) tenga cuidado de apagar register_globalsy magic_quotes_gpcobtener un rendimiento gratuito. En PHP> = 5.6 cambiaralways_populate_raw_post_data a -1.

  4. Extensiones PHP

    Joomla contiene algo de código para solucionar las extensiones PHP que faltan. Esto siempre será más lento que esas extensiones. Para una mejora del rendimiento decente instalar las siguientes extensiones: mbstring, zip,ftp

Servidor web

  1. Habilitar gzip

    La habilitación de la compresión del lado del servidor intercambia el ancho de banda para los recursos de la CPU. Para la mayoría de los sitios, esta es la decisión correcta. Tenga cuidado de comprimir solo datos de texto, comprimir datos binarios le dará el éxito de la CPU sin las ventajas de ancho de banda. También puede habilitar la compresión en la configuración de Joomla, pero es mejor si deja que el servidor se encargue de esto.

  2. Precomprimir recursos estáticos

    No estoy hablando de minficación (aunque esto también ayuda), pero puede configurar Nginx y Apache en el servidor de recursos ya comprimidos, eliminando efectivamente el golpe de CPU de la compresión gzip. Puntos de bonificación: use Zopfli para archivos aún más pequeños.

  3. Use FastCGI para PHP

    Más específicamente debes usar php-fpm. Esto impide iniciar PHP cuando el navegador solicita un archivo que no sea PHP.

  4. Use los encabezados de caché apropiados

    El uso del Expiresencabezado puede reducir en gran medida los recursos del servidor necesarios. Después de todo, la solicitud más rápida es la que nunca se hace.

apache

En general, recomendaría usar Nginx para sitios de alto rendimiento. Si realmente necesitas usar Apache por alguna razón, recibí un consejo extra:

  1. Deshabilitar AllowOverride

    La configuración AllowOverridede Noneevita una gran cantidad de E / S de disco y

Joomla

  1. No use el modo FTP

    Si bien no afecta a los usuarios que leen el sitio, ralentizará algunas operaciones, como la instalación de extensiones.

  2. Desactiva las extensiones no utilizadas

    Esto se aplica especialmente a los complementos, muchos de estos se ejecutan en cada solicitud. Deshabilitar los menús y componentes es principalmente útil cuando se enumeran las extensiones y los tipos de menú disponibles. También tome 5 minutos para recorrer las extensiones que vienen con el núcleo de Joomla y deshabilite las que no usa.

  3. Desactivar Preparar contenido

    Si usa muchos módulos personalizados ( mod_customno personalizados como en la escritura propia), verifique si puede deshabilitar Preparar contenido en ellos. Esto ahorra algo de procesamiento.

  4. Usar almacenamiento en caché

    Si te tomas en serio el rendimiento, querrás habilitar el almacenamiento en caché. Especialmente útil para leer sitios pesados ​​con muchos usuarios anónimos. Los usuarios con sesión iniciada omitirán la mayor parte de la memoria caché; si tiene muchos de estos, el efecto no será tan grande.

  5. Use un controlador de sesión alternativo

    Al usar un controlador de sesión alternativo, puede liberar su base de datos para cosas más importantes. No recomendaría el archivo (confusamente llamado None en la configuración de Joomla), ya que eso aumentará una vez más el disco IO. El uso de APC es potencialmente el fastet, pero aumenta el riesgo de perder todos los datos de la sesión. El término medio correcto es Memcache. Si bien esto requiere un proceso adicional, es más confiable que APC y mucho más rápido que almacenar todos los datos en la base de datos

  6. Mantenga su sitio simple

    ¿Realmente necesitas ese botón de Facebook? ¿Qué pasa con ese lindo ícono que nadie ve porque está parcialmente oculto detrás de un banner? Cuanto menos se muestre su sitio, más rápido será. Además, siempre que sea posible, use CSS3 en lugar de imágenes.

Diverso

  1. Establecer un favicon

    Gracias a una decisión que se remonta a los navegadores Internet Explorer 4.0, solicite un archivo llamado favicon.icocada vez que un usuario visita su sitio. Si no tiene uno, esto causa IO innecesarias, ya que las respuestas 404 no se almacenan en caché. Especifique el icono de su sitio con una metaetiqueta HTML o agregue un archivo llamado favicon.icoa la raíz web. ¿No quieres un favicon? Coloque un PNG transparente con un tamaño de 1x1 píxeles en esa ubicación. Tenga en cuenta que la extensión aún debe ser .ico.

  2. Optimiza tus imágenes

    Es sorprendente qué tipo de ahorro se puede obtener al optimizar las imágenes, especialmente los archivos PNG. Hay una variedad de herramientas disponibles para cualquier sistema operativo, personalmente uso ImageOptim, que está disponible para OS X. Las imágenes principales de Joomla ya están optimizadas, pero utilizan sus propias imágenes, especialmente las plantillas que son importantes. También puede verificar las extensiones que está utilizando. Si son de código abierto, ¿por qué no contribuye con una solicitud de extracción que contiene imágenes recién optimizadas?

El avanzado

Si realmente quieres salir, considera poner Varnish en frente de tu sitio. Almacena en caché las solicitudes a su sitio y, si es posible, las atiende desde su propio caché, sin llegar a Joomla. Es una herramienta compleja pero con mucho poder. Joomla no aprovechará la funcionalidad avanzada como Edge Side incluye (ESI), pero su propio código sí podría.


8
Eso parece ... bastante hostil. Solo para tu información, acabo de escribir esto, el texto no estaba preparado de ninguna manera. Siéntase libre de googlearlo. Recuerde que las respuestas no solo deberían ayudar al interrogador original, sino también a los futuros usuarios que encuentren su camino aquí.
Rouven Weßling

13

Una cosa GRANDE que puede hacer para mejorar los tiempos de respuesta para su sitio es actualizar la configuración de su módulo. Los módulos personalizados (usando mod_custom) tienen una opción para habilitar / deshabilitar la preparación de contenido. Esto le permite ejecutar complementos de contenido en el contenido de datos dentro de su módulo personalizado. Es potente cuando se usa correctamente, pero agrega tiempo de representación adicional a la salida del módulo. A menos que realmente esté utilizando un complemento de contenido dentro del contenido de su módulo personalizado, es mejor desactivarlo. Verá una disminución en el tiempo de representación del módulo cuando haga esto.

Captura de pantalla de la configuración: ingrese la descripción de la imagen aquí

Nota: Si mi respuesta lo ayudó, haga clic en el cheque a la izquierda para aceptar la respuesta.


3
Nunca he visto la sección de preparar contenido antes. ¿A qué versión de Joomla se aplica esto?
TryHarder

1
si está activado, los complementos pueden ejecutarse en el contenido. Entonces, si coloca códigos cortos de posiciones de módulos u otros códigos cortos de complementos en el área de texto html personalizada, estos no se mostrarán, solo verá, por ejemplo, "{tag_name}" en el sitio web, no la versión preparada
tristanbailey

2
La opción "Preparar contenido" se incluye en Joomla 2.5 y 3.x. La configuración predeterminada es "No".
Neil Robertson

8

Supongo que ha ejecutado su sitio a través de la velocidad de la página de Google, y de hecho está buscando reducir el tiempo de respuesta de la página, es decir, el tiempo que tarda su marcado en enviarse al navegador.

Los culpables más probables de esto son las consultas pesadas. Active la depuración y mire en la parte inferior de la página para averiguar cuáles son las consultas más pesadas y eliminarlas o reducirlas. También puede tomar la ayuda de los registros de consultas lentas de su servidor MySQL.

Lo siguiente que puede ver es el almacenamiento en caché. Dependiendo del tipo de sitio que tenga, puede activar el almacenamiento en caché conservador o progresivo. Progressive se debe utilizar en sitios que no tienen funciones relacionadas con el usuario.


¿Puede darnos algún consejo o captura de pantalla de cómo son las consultas pesadas? ¿Hay algún umbral para alcanzar?
David Fritsch

Realmente depende de su aplicación. Sin embargo, cualquier consulta que aparezca en el registro lento de consultas (que en la configuración normal registra cualquier consulta que tarde más de 1 segundo en ejecutarse) es un buen candidato para dividir y / o colocar dentro de un caché. Otra cosa que puede sonar tonta, pero asegúrese de que todas las consultas tengan un LÍMITE.
Ashwin Fecha

6

Las cosas que sé que pueden ayudar (la mayoría de las cuales se han enumerado) son estas:

  1. Almacenamiento en caché
  2. Compresión (gzip sus archivos css y js)
  3. Combinación de archivos (todo su CSS se combina en un solo archivo)
  4. Descarga de imágenes y archivos en un CDN.

He usado una combinación del caché Joomla incorporado (o incluso APC habilitado en el servidor) y complementos como el plugin rockbooster de gzip o rocket theme. También utilizo el complemento CDN que no es número con una cuenta de Amazon.

Definitivamente ayuda, pero debe vigilar su sitio y deshabilitar la memoria caché para los componentes que tienen problemas. Tuve que pasar por alto CiviCRM en nuestro sitio porque no funcionaba bien con el almacenamiento en caché. Joomla viene con un complemento de control de caché que puede manejar eso.


2
combina y comprime tus imágenes cuando sea posible también. Los sprites pueden guardar docenas de solicitudes por carga de página.
ContextSwitch

Siempre me olvido de los sprites. :)
Brian Peat

Tenga en cuenta una cosa con respecto a los sprites: las imágenes de fondo no se muestran cuando Windows cambia al modo de alto contraste. Si bien este comportamiento es bienvenido para los gráficos generales, es un problema para los controles en los que el usuario debe hacer clic; simplemente desaparecen (por ejemplo, botones de votación en este sitio)
Miroxlav

Je Brian Peat, me pregunto si podría estar interesado en ayudarnos a lanzar un sitio CiviCRM en StackExchange. Necesitamos encargados que tengan más de 200 reputación en algún otro sitio de StackExchange : area51.stackexchange.com/proposals/77367/civicrm Cheers!
Joe Murray

Le daré un vistazo. Todo esto estaba basado en Joomla y no hice ninguna programación, pero podría ayudarlo con preguntas básicas.
Brian Peat

4

También querrá considerar la reducción de los activos locales y el almacenamiento en caché adecuado. Una cosa que puede hacer es usar complementos de CDN. Aquí hay dos que recomendaría:

'corePHP' jomCDN - https://www.corephp.com/joomla-products/jomcdn

NoNumbers CDN para Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

Además, si ninguno de los anteriores parece resolver los problemas, es posible que tenga un problema más profundo, posiblemente dentro de su plantilla, el servidor mismo u otras cosas. Si ese es el caso, podría ser mejor contratar a alguien para que busque el problema y lo resuelva por usted.


3

También puede usar este código en su archivo .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>

esto parece interesante, ¿puedes explicar lo que hace?
web-tiki

@ web-tiki Su configuración caduca encabezados. Los encabezados caducados le indican al navegador si deben solicitar un archivo específico del servidor o si deben obtenerlo de la memoria caché del navegador. La idea general detrás de Expires Headers no es solo reducir la carga de descargas del servidor (descargar constantemente el mismo archivo cuando no está modificado está desperdiciando un tiempo de carga precioso) sino más bien reducir la cantidad de solicitudes HTTP para el servidor. REFERENCIA gtmetrix.com/add-expires-headers.html
TryHarder

2

¡He creado más de cientos de sitios web usando Joomla!

En la mayoría de los casos, la gente piensa que Joomla está trabajando mucho en el servidor, pero según los análisis realizados por mí, lo más importante para mantener su sitio web RÁPIDO es OPTIMIZAR las IMÁGENES y JS / CSS.

No use editores de Joomla, como JCE, para cambiar el tamaño de la imagen. Use editores de imágenes como Photoshop o cualquier otro editor para cambiar el tamaño de sus imágenes al tamaño que necesita.

Utilice herramientas de compresión JS / CSS.

¡Siempre usamos Pingdom Tools para analizar la velocidad del sitio web y utilizamos la función integrada de T3 Framework para optimizar JS / CSS!


¿Qué herramientas utilizas para la compresión JS / CSS? ¿Alguna recomendación sobre cómo alguien podría analizar su sitio web como usted lo ha hecho para sus sitios?
David Fritsch

¡Siempre usamos Pingdom Tools para analizar la velocidad del sitio web y utilizamos la función integrada de T3 Framework para optimizar JS / CSS!
Gev Balyan

2
También utilicé con éxito JCH optimice para lograr mucha compresión y minificación. Otra opción es utilizar mod_pagespeed de Apache, que básicamente implementa la mayoría de las recomendaciones de Google Pagespeed.
Ashwin Fecha

2
Todas buenas herramientas. @GevBalyan, recomendaría agregar cosas como esta en su respuesta con enlaces. ¡Ahorra a la gente algo de google! Incluso puede editar esta respuesta para agregarla a esta. :)
David Fritsch

Las herramientas de compresión que no almacenan en caché pueden aumentar el tiempo de respuesta del servidor, ya que agrega tiempo de procesamiento a la respuesta del servidor.
Don Gilbert

1

¿Has eliminado los complementos no utilizados? Joomla tiene que cargar y procesar cada complemento publicado para eventos activados en una solicitud.

¡Tienes que entender las extensiones que has instalado y cómo interactúan con Joomla!

Muchas extensiones instalan complementos que administran el contenido, el sistema o las actividades del usuario para iniciar funciones de código. Algunos de ellos pueden ser superfluos.

Sé que k2 instala muchos complementos que responden a eventos relacionados con el idioma que no producen resultados reales para sitios de un solo idioma. Anular la publicación de esos complementos puede reducir el tiempo de procesamiento.


¿Puedes hablar más sobre esto? ¿Qué quieres decir con "eventos activados"? ¿Cómo puedo saber qué eventos se desencadenan?
David Fritsch

1
Buena pregunta. ¡Tienes que entender las extensiones que has instalado y cómo interactúan con Joomla! Muchas extensiones instalan complementos que administran el contenido, el sistema o las actividades del usuario para iniciar funciones de código. Algunos de ellos pueden ser superfluos. Sé que k2 instala muchos complementos que responden a eventos relacionados con el idioma que no producen resultados reales para sitios de un solo idioma. Anular la publicación de esos complementos puede reducir el tiempo de procesamiento. Sin embargo, de manera similar, K2 ha tenido la mala costumbre de generar consultas costosas para producir métricas dudosamente valiosas.
Joomsavvy

1
¿Podría actualizar su respuesta con información en su comentario?
Harald Leithner

1

Mejore los recursos del plan de servidor / alojamiento web

Tal vez no sea la respuesta que buscaba el OP, pero vale la pena mencionarlo en caso de que no sea obvio para todos (y ninguna otra respuesta lo haya mencionado aún): mejorar los recursos del servidor, como la memoria, la CPU y la velocidad del disco.

Si está utilizando un alojamiento web compartido, la actualización del plan "económico" al plan "comercial" u otro plan más avanzado puede mejorar los recursos del servidor disponibles para su sitio web y reducir el tiempo de respuesta del servidor. Mudarse a una empresa de alojamiento de mejor calidad (por ejemplo, con servidores de alojamiento web compartidos menos concurridos) también podría ayudar.

Un mejor plan de alojamiento también podría darle acceso a mejoras de rendimiento que no están incluidas en el plan básico de alojamiento. Por ejemplo, los planes de alojamiento "GrowBig" y "GoGeek" SiteGround incluyen caché dinámica que ayuda a reducir significativamente el tiempo de respuesta del servidor. La opción de caché dinámica no está disponible en el plan "Inicio".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.