En el proceso de utilizar WordPress para crear un sitio web, se han tomado muchos "desvíos" para optimizar el rendimiento de WordPress y acelerar el acceso al sitio web. Cuando el acceso al sitio web es lento y la memoria de la CPU está agotada, lo primero que pienso es en actualizar la configuración del servidor. Más tarde, descubrí que algunos comerciantes de VPS sin escrúpulos restringen severamente los recursos detrás de escena y es realmente doloroso pagar más. mejora.
La mayor experiencia es que con la misma configuración, ejecuto el mismo sitio web de diferentes proveedores de VPS en las mismas condiciones de tráfico, uno funciona sin problemas y el otro está atascado. La sensación más grande para mí es que debo leerlo antes de comprar un VPS. Debe comparar cuidadosamente las reseñas de otras personas, especialmente las reseñas de rendimiento del host VPS, de lo contrario fácilmente gastará mucho dinero.
Más tarde, al optimizar WordPress, me centré en el almacenamiento en caché de páginas. Los complementos de almacenamiento en caché que he usado antes incluyen, entre otros, WordPress Super Cache, WP Fastest Cache, W3 Total Cache, cos-html-cache, Cachify... En resumen. , Lo instalé. El almacenamiento en caché del complemento sigue siendo eficaz para acelerar, pero también trae muchos problemas.
Por ejemplo, configuraciones complejas, reglas generadas, conflictos de complementos y la incapacidad de hacer frente al tráfico repentino, lo que significa que el uso de complementos de almacenamiento en caché aún no puede hacer frente al impacto del gran tráfico. Finalmente, por recomendación de un amigo, habilité el caché Nginx fastcgi_cache y usé Nginx directamente para generar el caché para la página. La eficiencia es mucho mayor que usar el complemento de caché PHP, que es especialmente adecuado para usar en VPS con poco espacio. configuraciones.
Para obtener más artículos de experiencia sobre WordPress y optimización de servidores, aquí están:
- Experiencia de optimización de php-fpm de Linux: el proceso php-fpm ocupa mucha memoria y no libera problemas de memoria
- WordPress agrega Alipay, ejemplos de producción de botones de recompensa de WeChat y enlaces de recompensa de Paypal.me
- Tutorial de operación y sintaxis básica de tareas programadas del comando Linux Crontab-VPS/Automatización de servidores
PD: Actualizado el 19 de diciembre de 2018, La búsqueda en el sitio que viene con WordPress no solo es lenta sino que tampoco puede buscar más palabras clave. Podemos crear una nosotros mismos o utilizar una búsqueda de terceros para insertarla. WP: Búsqueda de sitios web mejorada dentro del sitio: Baidu, búsqueda personalizada de Google y búsqueda autoconstruida de Elasticsearch.
PD: Actualizado el 29 de septiembre de 2019, Debido al artefacto de optimización del servidor ngx_pagespeed desarrollado por Google, integra un conjunto completo de herramientas de optimización, como carga retrasada de imágenes, webp adaptativo, optimización de JS y CSS, y optimización de imágenes. Optimización: artefacto de optimización de PageSpeed Server: Nginx implementa el módulo ngx_pagespeed y experimenta efectos acelerados.
1. Instale el módulo Nginx ngx_cache_purge
sitio web:
- HTTP://labs.Frick.com/files/
1.1 LNMP
Si está utilizando el paquete de instalación de un solo clic de LNMP, edite el archivo lnmp.conf en el directorio del paquete de instalación de lnmp, agregue –add-module=/root/ngx_cache_purge-2.3 entre comillas simples de Nginx_Modules_Options=" , guarde Y la actualización de nginx se instala con un solo clic, y otros módulos también pueden consultar esto.
ngx_cache_purge-2.3 requiere que descargue el paquete de instalación del sitio web oficial frickle.com y lo descomprima. La última versión es 2.3.
1.2 Una pila
Si está utilizando el panel OneinStack, puede compilar el módulo ngx_cache_purge con el siguiente comando.
# nginx -V 2>&1 | grep -o ngx_cache_purge 查看ngx_cache_purge是否安装,没有数据表示未安装 cd /root/oneinstack/src wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz tar xzf ngx_cache_purge-2.3.tar.gz #以下几个安装包都是Oneinstack自带的,不同的版本可能会不同,请根据情况调整 tar xzf nginx-1.14.0.tar.gz tar xzf pcre-8.42.tar.gz tar xzf openssl-1.0.2o.tar.gz cd /root/oneinstack/src/nginx-1.14.0 nginx -V #查看nginx编译参数,最后加上--add-module=../ngx_cache_purge-2.3 ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.0.2o --with-pcre=../pcre-8.42 --with-pcre-jit --with-ld-opt=-ljemalloc --add-module=../ngx_cache_purge-2.3 make #编译 mv /usr/local/nginx/sbin/nginx{,_`date +%F`} #备份nginx cp objs/nginx /usr/local/nginx/sbin nginx -V 2>&1 | grep -o ngx_cache_purge # 显示ngx_cache_purge表示已经安装成功
Cuando utilice Nginx -V
para ver los parámetros de compilación y agregar el módulo adicional, asegúrese de operar de acuerdo con sus propios parámetros de compilación de Nginx, es decir, mantenga los parámetros originales de Nginx y agregue el módulo adicional. Por ejemplo el mio:
2. Nginx habilita el almacenamiento en caché fastcgi_cache: ejemplo de configuración
2.1 Ejemplo de configuración
A continuación publico directamente un ejemplo de Nginx de wzfou.com que habilita la configuración de caché fastcgi_cache. Las instrucciones detalladas son las siguientes:
#路径需要提前创建好 fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=500m; fastcgi_temp_path /tmp/nginx-cache/temp; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; #忽略一切nocache申明,避免不缓存伪静态等 fastcgi_ignore_headers Cache-Control Expires Set-Cookie; server { listen 80; listen 443 ssl http2; …………………此部省略…………………… set $skip_cache 0; #post访问不缓存 if ($request_method = POST) { set $skip_cache 1; } #动态查询不缓存 if ($query_string != "") { set $skip_cache 1; } #后台等特定页面不缓存(其他需求请自行添加即可) if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|/zhuye/|/wzfou.com/||/question/|/bbs/|/dongtai/|/haoyou/|/qun/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } #对登录用户、评论过的用户不展示缓存 if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } #这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了! location ~ [^/].php(/|$) { #fastcgi_pass remote_php_ip:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; #新增的缓存规则 fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; add_header X-Cache "$upstream_cache_status From $host"; add_header Cache-Control max-age=0; add_header Nginx-Cache "$upstream_cache_status"; add_header Last-Modified $date_gmt; add_header X-Frame-Options SAMEORIGIN; # 只允许本站用 frame 来嵌套 add_header X-Content-Type-Options nosniff; # 禁止嗅探文件类型 add_header X-XSS-Protection "1; mode=block"; # XSS 保护 etag on; fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 1d; } #缓存清理配置(可选) location ~ /purge( /.*) { #为防止转义,请去掉{ /之间的空格 allow 127.0.0.1; #此处填写你的服务器IP allow 89.208.xxx.xxx; deny all; #请注意此处的WORDPRESS要与上面的keys_zone保持一致 fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; } …………………此部分省略…………………… }
2.2 Instrucciones
¿Local o memoria? En fastcgi_cache_path y fastcgi_temp_path, alguien sugeriría configurarlo en la ruta de memoria, por ejemplo: /dev/shm/nginx-cachelevels=1:2keys_zone=WORDPRESS:100m inactive=60m;
, si su If el disco IO es muy lento, se recomienda utilizar este método. Después de todo, la velocidad de lectura y escritura de la memoria es muy rápida.
add_header Cache-Control
Si el contenido dinámico necesita actualizarse en tiempo real, se puede configurar en 0; de lo contrario, el tiempo se puede configurar por más tiempo.
3. Instale el complemento Nginx Helper: actualice automáticamente la caché
Mediante el método anterior, hemos configurado el caché fastcgi_cache. A continuación, tenemos que resolver el problema de actualizar automáticamente la página de caché de Nginx cuando WordPress tiene nuevos comentarios y nuevos artículos. Busque directamente el complemento Nginx Helper para descargar, luego configúrelo, primero habilítelo y seleccione archivos locales como método de limpieza.
El complemento también proporciona otras configuraciones, como si se actualiza el caché de Nginx al publicar nuevos artículos y comentarios.
Dado que la ruta de caché definida por el autor del complemento es /var/run/nginx-cache, y podemos personalizar la ruta de caché de acuerdo con la situación real del servidor, la diferencia en la ruta de caché hará que el complemento ¡No podrá encontrar el archivo de caché y eliminarlo!
La solución es agregar el siguiente código a wp-config.php en el directorio raíz de WordPress:
//根据实际情况定义缓存的存放路径 define( 'RT_WP_NGINX_HELPER_CACHE_PATH','/tmp/wpcache');
Si descubre que el código que define la ruta anterior no tiene efecto, puede utilizar los consejos del blogger "natural":
La primera es modificar el complemento y cambiar la ruta del complemento por la suya propia; la segunda es utilizar enlaces suaves, /var/run/nginxcache y /tmp/wpcache;
3. Vista previa del efecto Nginx fastcgi_cache
Después de habilitar Nginx fastcgi_cache, podemos ver que se ha incluido en la información del encabezado del encabezado del navegador.
Para las páginas que se han configurado para no almacenarse en caché, Nginx fastcgi_cache mostrará directamente BYPASS.
Además, Nginx fastcgi_cache también BYPASS directamente para los usuarios que han iniciado sesión y los usuarios que han publicado comentarios.
Al mismo tiempo, el archivo de caché generado por Nginx fastcgi_cache también se puede ver en la ruta de caché de nuestro servidor.
Si descubre que los usuarios que comentaron todavía usan el caché, debería ser que WP no recuerda las cookies. Simplemente agregue el siguiente código a functions.php
.
add_action('set_comment_cookies','coffin_set_cookies',10,3); function coffin_set_cookies( $comment, $user, $cookies_consent){ $cookies_consent = true; wp_set_comment_cookies($comment, $user, $cookies_consent); }
4. Resumen
Habilitar el almacenamiento en caché fastcgi_cache en Nginx es muy importante para acelerar la velocidad de respuesta de la página web y ahorrar recursos del servidor. La siguiente imagen es el resultado de la prueba de alibabacloud.com. Se puede ver que la capacidad de carga del servidor ha mejorado enormemente después de habilitar el almacenamiento en caché.
Cuando wzfou.com busca en el sitio para habilitar el caché fastcgi_cache, descubre que la información de Cache-Control se agrega al archivo de configuración de Nginx, pero no siempre tiene efecto. La información del encabezado HTTP siempre contendrá la siguiente información:
Cache-Control: sin almacenamiento, sin caché, debe revalidar, post-check=0,pre-check=0 y Pragma: sin caché,
Después de la investigación, el problema radica en la parte de configuración de PHP.ini de session.cache_limiter
en los paquetes de un clic LNMP y Oneinstack. El valor predeterminado es nocache y debemos configurarlo en none.