Red de conocimiento informático - Conocimiento informático - Cómo optimizar el rendimiento del sitio web

Cómo optimizar el rendimiento del sitio web

1. Optimización del front-end

La optimización del rendimiento del sitio web es un tema muy completo que involucra la configuración del servidor, programas de front-end y back-end del sitio web, etc. experiencia real, comparta sus intentos de optimizar el rendimiento del sitio web. La razón por la que el título es "web2.0" es porque este artículo se centra más en la optimización del rendimiento de sitios web pequeños y medianos. El sistema que uso también es una arquitectura LAMP web2.0 típica.

Primero, hablemos de la optimización del front-end. El 80% del tiempo de espera que un usuario pasa en una página web ocurre en la parte frontal del navegador, especialmente en la página de descarga y los distintos elementos dentro de la página (imágenes, CSS, Javascript, Flash). Por lo tanto, en muchos casos, la optimización front-end puede lograr el doble de resultado con la mitad de esfuerzo en comparación con dedicar mucho tiempo a mejoras arduas y complejas del programa. Yahoo abrió recientemente su herramienta de prueba de rendimiento interna yslow a terceros y lanzó las famosas "Trece reglas para la optimización del rendimiento de sitios web". Se recomienda que todos descarguen e instalen yslow y lo utilicen como herramienta para medir el efecto de la optimización del sitio web. Destacaré algunos que son particularmente valiosos y explicaré exactamente cómo optimizarlos:

Cosas que podemos hacer para los usuarios que visitan su sitio por primera vez y aún no han almacenado en caché el contenido de su sitio. la caché de su navegador Incluyendo:

1) Reducir el número de visitas a una página generadas por una visita a una página) ayudará a mejorar la capacidad del navegador para descargar contenido del sitio web en paralelo.

Para los visitantes frecuentes del sitio web, la principal idea de optimización es reducir la sobrecarga del servidor maximizando el uso de la memoria caché del navegador del usuario.

1) Agregar tiempo de vencimiento (ExpiresHeader) en el encabezado

Agregar un tiempo de vencimiento más largo para el contenido estático en el encabezado para que las visitas futuras solo puedan leer el archivo de caché sin ninguna interacción con el servidor. Sin embargo, existen algunos problemas con esto, es decir, cuando se actualizan las imágenes, los archivos CSS y js, el usuario no podrá obtener las actualizaciones sin actualizar el navegador. Por lo tanto, cuando realizamos cambios en archivos de imágenes, CSS y js, debemos cambiarles el nombre para asegurarnos de que los usuarios accedan al contenido más reciente. La solución propuesta por Flickr es hacer que las URL con diferentes números de versión apunten al mismo archivo mediante urlrewrite, lo cual es un enfoque inteligente porque las operaciones a nivel de URL son muy eficientes y facilitan enormemente el proceso de desarrollo.

Para entender por qué se hace esto, es importante comprender cómo funciona el navegador al acceder a la URL:

a. el contenido de la página del segmento del servidor y coloque los archivos relacionados (imágenes, css, js) en el caché y coloque el tiempo de vencimiento, la última modificación, las etiquetas ET y otra información relevante en el encabezado del archivo.

b. Cuando un usuario visita repetidamente la URL, el navegador primero verificará si hay un archivo con el mismo nombre que el sitio web en el caché. Si es así, verifique el tiempo de vencimiento del archivo; no ha caducado, luego lea el archivo directamente desde el caché sin volver a acceder al servidor.

c. Si el tiempo de vencimiento del archivo en el caché no existe o ha expirado, el navegador accederá al servidor, obtendrá la información del encabezado del archivo y verificará la última modificación, las ETags y otra información. Si el navegador encuentra que el archivo en el caché local no se ha modificado desde la última vez que visitó el sitio web, se utilizará el archivo en el caché local; si el archivo se ha modificado, el navegador obtendrá la última versión del; servidor.

Mi experiencia es que, si es posible, intente seguir este principio y agregue un tiempo de caducidad a los archivos estáticos, lo que puede reducir en gran medida el acceso repetido de los usuarios a los recursos del servidor.

2) Haga referencia a archivos css y js en archivos externos separados

Coloque los archivos css y js en archivos separados para que se almacenen en caché por separado y se utilicen al acceder a otras páginas desde las que se pueden leer directamente. la caché del navegador. Sin embargo, la página de inicio de algunos sitios web puede ser una excepción, porque es posible que estas páginas de inicio no sean lo suficientemente grandes como para navegar solas, pero son la primera impresión de los usuarios que visitan el sitio web y el punto de partida para otras páginas, o estas páginas mismas pueden usar una gran cantidad de tecnología y actualización local ajax, lo que permite escribir archivos css y js directamente en la página.

3) Eliminar scripts duplicados

En IE, contener scripts js duplicados hará que la caché del navegador quede inutilizable. Revise su programa cuidadosamente y elimine las referencias de scripts duplicadas. ser difícil.

4) Evite los redireccionamientos

A excepción de los redireccionamientos artificiales en el título, los redireccionamientos de páginas web suelen ocurrir sin querer y el contenido redirigido no utiliza la memoria caché del navegador. Por ejemplo, si el usuario está de visita, el servidor redirigirá a / mediante 301, seguido de "/". Esto también puede suponer una carga adicional para el servidor si no se configura correctamente. Puede evitar redirecciones innecesarias configurando alias de Apache o utilizando métodos como el módulo mod_rewrite.

Existen otros métodos, como utilizar un mecanismo de distribución CDN, evitar el uso de expresiones CSS, etc., y evitar el uso de ETags, etc. Estos métodos se utilizan con menos frecuencia y no se analizarán. en detalle aquí.

Después de completar la optimización anterior, puede intentar utilizar yslow para probar la puntuación de rendimiento de la página web, que normalmente puede alcanzar más de 70 puntos.

Por supuesto, además de la optimización del contenido estático y del front-end del navegador, también hay optimizaciones para scripts, servidores, bases de datos y cargas. Estos son métodos de optimización más profundos con mayores requisitos técnicos. La segunda mitad de este artículo se centrará en la optimización del backend.

2. Optimización de back-end

La última vez que escribí un capítulo sobre optimización de front-end de sitios web web2.0 siempre quise escribir los métodos de optimización de back-end. . Hoy finalmente tengo tiempo para ordenar mis ideas.

La optimización del front-end puede evitarnos un desperdicio innecesario de recursos del servidor y del ancho de banda. Sin embargo, a medida que aumenta el número de visitas al sitio web, la optimización del front-end por sí sola no puede resolver todos los problemas. La capacidad para manejar solicitudes paralelas, la eficiencia del programa, el rendimiento del hardware y la escalabilidad del sistema se convertirán en cuellos de botella clave que afectarán el rendimiento y la estabilidad del sitio web. La optimización del rendimiento de sistemas y programas puede partir de los siguientes aspectos:

1) Optimizar la configuración de apache, mysql y otro software

Aunque apache, mysql y otro software utilizan el valor predeterminado configuración después de la instalación La configuración es suficiente para que su sitio web se ejecute, pero aún es posible mejorar la eficiencia y la estabilidad ajustando algunos parámetros del sistema de mysql y apache. Hay muchos artículos y foros especializados en esta área (por ejemplo: Dominarlo requiere investigación y práctica en profundidad, no me centraré en la discusión aquí).

2) Aceleración del entorno de aplicaciones

Aquí solo tomo como ejemplo mi entorno de desarrollo PHP más utilizado. Existen algunas herramientas y software que pueden acelerar el entorno de ejecución de PHP optimizando. El principio básico es precompilar y almacenar en caché el código PHP sin modificar ningún código, por lo que es relativamente sencillo aumentar la eficiencia operativa de PHP en un 50%. Es relativamente simple y puede aumentar la eficiencia operativa de PHP en más del 50%. Las herramientas de aceleración de PHP más utilizadas incluyen APC (package-info.php?package=APC), TurckMMCache (), phpaccelebrator () y ZendPerformanceSuite de pago

3) El contenido estático y dinámico se procesa por separado

Apaccelebrator() es el método de aceleración PHP más utilizado. /p>

Apache es un servidor web completamente funcional pero relativamente grande. Su consumo de recursos es básicamente proporcional a la cantidad de procesos que se ejecutan al mismo tiempo. Consume una gran cantidad de memoria del servidor y la eficiencia de. el procesamiento de tareas paralelas también es bajo en general. En algunos casos, podemos utilizar un servidor web más ligero para alojar imágenes estáticas, hojas de estilo y archivos javascript, lo que puede aumentar considerablemente la velocidad de procesamiento de archivos estáticos y reducir el consumo de memoria. El servidor web que uso es nginx de Rusia, otras opciones incluyen lighttpd y thttpd.

4) Equilibrio de carga de acceso front-end basado en proxy inverso

Cuando el servidor front-end no es suficiente para manejar el acceso de los usuarios, se equilibra la carga del acceso web a través del front-end La máquina es la solución más rápida y factible.

Usando mod_proxy de Apache, puede lograr un equilibrio de carga basado en un proxy inverso. Aquí recomendamos usar nginx como servidor proxy, que tiene una velocidad de procesamiento más rápida que Apache.

5) Aplicar tecnología de almacenamiento en caché para mejorar el rendimiento de la base de datos, el almacenamiento en caché de archivos y el almacenamiento en caché distribuido.

El acceso concurrente al procesamiento de acceso a la base de datos es un cuello de botella clave para muchas aplicaciones de red cuando se piensa en utilizar maestro-esclavo. estructura y múltiples Al crear un clúster de servidores en modo clúster, primero debe asegurarse de que el caché de consultas de la base de datos se utilice por completo. Algunos tipos de bases de datos (como innoDB de MySQL) admiten el almacenamiento en caché de forma nativa y también puede utilizar métodos programáticos para almacenar en caché las consultas utilizadas con frecuencia a través de archivos o memoria. Por ejemplo, el almacenamiento en caché en forma de archivos se puede implementar fácilmente a través de las funciones ob_start y de lectura y escritura de archivos de PHP. Si tiene varios servidores, puede usar la tecnología Memcache para almacenar en caché las consultas de la base de datos a través de la memoria compartida distribuida, lo cual no solo es eficiente sino también. confiable Por extensión, la tecnología Memcache ha sido probada en aplicaciones web conocidas como livejournal y Craigslist.org.

6) Detectar el estado de ejecución del servidor y encontrar los cuellos de botella que afectan el rendimiento.

La optimización del sistema no es un método único. Es necesario detectar el estado de ejecución del servidor. servidor y descubrir rápidamente los cuellos de botella y posibles cuellos de botella que afectan el rendimiento. El problema potencial es que el rendimiento del sitio web siempre dependerá de las deficiencias del barril. Puede escribir algunos scripts para detectar el funcionamiento de los servicios web y algunos programas de código abierto también proporcionan buenas funciones

7) Una buena arquitectura escalable es la base de la estabilidad y el rendimiento

Algunos Los consejos y trucos pueden ayudarlo a superar las dificultades actuales, pero para que el sitio web pueda manejar visitas a gran escala, debe planificarse cuidadosamente desde la arquitectura del sistema. Afortunadamente, muchas personas lo han compartido desinteresadamente con nosotros. Gracias a su experiencia en la construcción de sitios web, podemos evitar desvíos. Leí dos artículos inspiradores recientemente:

-Desarrollo backend para LiveJournal como una forma de optimizar el rendimiento de sitios web grandes

-Seis refactorizaciones de Myspace

Finalmente, Debo mencionar el impacto de la codificación del programa y la estructura de la base de datos en el rendimiento. Una serie de bucles incorrectos, consultas ilógicas y tablas de datos o tablas de índice diseñadas incorrectamente tendrán un impacto significativo en el rendimiento del sitio web. Una serie de bucles incorrectos, una consulta ilógica o una tabla de datos o de índice mal diseñada pueden ralentizar exponencialmente su aplicación. Desarrollar habilidades de pensamiento global, desarrollar buenos hábitos de programación y comprender el mecanismo operativo de la base de datos son la base para mejorar la calidad de la programación.