1. Introducción a LiteSpeed
LiteSpeed es un potente servidor web que ofrece una mejora de rendimiento notable en comparación con Apache. Es totalmente retrocompatible con Apache, así que el funcionamiento del servidor sigue siendo el mismo.
LiteSpeed incluye por defecto un avanzado sistema de caché llamado LSCache, que cachea el contenido dinámico de las webs para servirlo como contenido estático, mejorando el tiempo de carga de forma sobresaliente: el usuario navega y las páginas cargan al instante.
El secreto de este rendimiento reside en la integración nativa entre los diferentes CMS (WordPress, Prestashop, Magento, Drupal, Joomla...) y el propio LiteSpeed.
A continuación te explicamos cómo configurar LiteSpeed para sacar el máximo provecho a tu web.
2. Activar LSCache mediante plugin
Activar LSCache es muy simple: solo debes instalar el plugin correspondiente a tu CMS.
- WordPress: litespeed-cache
- Prestashop: LiteSpeed Cache para Prestashop
- OpenCart: LiteSpeed Cache para OpenCart
- Magento: LiteMage
- Joomla: LiteSpeed Cache para Joomla
- Drupal: LiteSpeed Cache para Drupal
- XenForo: LiteSpeed Cache para XenForo
- MediaWiki: LiteSpeed Cache para MediaWiki
Tras instalar el plugin notarás que los tiempos de carga bajan drásticamente.
Si quieres vaciar la caché de LiteSpeed, en el propio cPanel tienes un icono para hacerlo.
Los plugins son totalmente gratuitos. El servidor LiteSpeed sí tiene un coste de licencia, pero en GINERNET lo asumimos nosotros para que puedas usar los plugins sin pagar nada.
3. Activar LSCache sin plugin
Si tu web no tiene módulo para LiteSpeed, puedes aplicar la siguiente directiva al principio de tu fichero .htaccess:
Para cachear todo el contenido:
RewriteRule ^(.*) - [E=Cache-Control:max-age=86400]
Para cachear un fichero concreto:
RewriteRule ^fichero.php$ - [E=Cache-Control:max-age=86400]
La variable max-age especifica en segundos el tiempo que permanecerá cacheado el contenido; pasado ese tiempo, la caché se vacía. 86400 segundos = 1 día.
4. Configurar el crawler de LiteSpeed para Prestashop o WordPress
El crawler de LiteSpeed para Prestashop (también funciona en WordPress) es un script que rastrea de forma automática y periódica todas las páginas de tu web para introducirlas en la caché. Así, cuando un usuario visite tu web, la descargará directamente desde la caché (más rápido).
- Genera un sitemap para que el crawler sepa qué páginas cachear. En Prestashop puedes usar la herramienta Google Sitemap.
- Descarga el fichero crawler y súbelo por FTP (no hace falta que esté dentro de
public_html). - Accede a tu cPanel y crea un cron diario, por ejemplo a las 3:00 AM, con este comando:
bash /home/USUARIO/cachecrawler.sh -m URL_SITEMAP >/dev/null 2>&1
Por ejemplo:
bash /home/ginernet/cachecrawler.sh -m https://ginernet.com/sitemap_index.xml >/dev/null 2>&1
Puedes contactar con nosotros para que comprobemos que el cron y el crawler funcionan correctamente.
5. Optimizar LSCache en WordPress
El plugin LSCache de WordPress tiene muchísimas opciones y no existe una configuración universal válida para todas las webs. Estas settings las hemos comprobado con la mayoría de las webs y ofrecen un nivel de optimización sobresaliente:
Cache general
Enable Cache ON
Cache Logged-in Users ON
Cache Commenters ON
Cache REST API ON
Cache Login Page ON
Cache favicon.ico OFF
Cache PHP Resources OFF
Cache Mobile OFF
Cache avanzada
Instant Click ON
Page Optimization > CSS Settings
CSS Minify OFF
CSS Combine OFF
Generate UCSS OFF
UCSS Inline OFF
CSS Combine External and Inline OFF
Load CSS Asynchronously ON
CCSS Per URL ON
Inline CSS Async Lib ON
Font Display Optimization Swap
Page Optimization > JS Settings
JS Minify OFF
JS Combine OFF
JS Combine External and Inline OFF
Load JS Deferred OFF
Page Optimization > HTML Settings
HTML Minify ON
DNS Prefetch Control ON
Remove Query Strings OFF
Load Google Fonts Asynchronously OFF
Remove Google Fonts OFF
Remove WordPress Emoji OFF
Remove Noscript Tag OFF
6. Protección ReCAPTCHA de LiteSpeed
En los servidores con LiteSpeed puedes proteger el acceso a tu web mediante una verificación reCAPTCHA. Se configura de forma muy simple mediante .htaccess:
Proteger toda la web para países concretos (en el ejemplo, China y Rusia):
<IfModule LiteSpeed>
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|RU)$
RewriteRule .* - [E=verifycaptcha:drop][L]
</IfModule>
Proteger toda la web para todo el mundo:
<IfModule LiteSpeed>
RewriteRule .* - [E=verifycaptcha:drop]
</IfModule>
Cuidado con esta última regla: las pasarelas de pago no podrán enviar notificaciones al no poder resolver el reCAPTCHA.
Lanzar el ReCaptcha a todos los visitantes que NO sean de España, permitiendo los buscadores y pasarelas de pago:
<IfModule LiteSpeed>
RewriteCond %{HTTP_USER_AGENT} !(Paypal|Stripe|Googlebot|Bingbot|Slurp|DuckDuckBot|Baiduspider|YandexBot|facebookexternalhit|Twitterbot|LinkedInBot) [NC]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^ES$
RewriteRule .* - [E=verifycaptcha:drop][L]
</IfModule>
Proteger toda la web excepto algunos directorios/ficheros concretos:
<IfModule LiteSpeed>
RewriteCond %{REQUEST_URI} !^/directorio/excluido/
RewriteCond %{REQUEST_URI} !^/fichero/excluir.php
RewriteRule .* - [E=verifycaptcha:drop]
</IfModule>
Proteger solo algunos directorios/ficheros concretos:
<IfModule LiteSpeed>
RewriteRule fichero.php - [E=verifycaptcha:drop]
RewriteRule ^directorio - [E=verifycaptcha:drop]
RewriteRule ^directorio/permitido - [E=verifycaptcha:drop]
RewriteRule ^directorio/fichero.php - [E=verifycaptcha:drop]
</IfModule>
Bloquear por completo uno o varios países, devolviendo un error 403 a los visitantes:
<IfModule LiteSpeed>
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|RU)$
RewriteRule ^(.*)$ - [F,L]
</IfModule>
7. Configurar valores php.ini personalizados en LiteSpeed
LiteSpeed permite modificar ciertos parámetros de PHP mediante .htaccess. Edita tu fichero .htaccess y define los valores que quieras; aquí tienes un ejemplo de sintaxis:
php_value max_execution_time 300
php_value memory_limit 2048M
php_value upload_max_filesize 2048M
php_value post_max_size 2048M
Para verificar qué valores está devolviendo el servidor, crea una página PHP de prueba que ejecute la función phpinfo():
<?php
phpinfo();
?>
8. Eliminar el timeout del servidor LiteSpeed
Las directivas de esta sección hacen que los procesos de LiteSpeed nunca se maten, lo cual puede saturar el servidor y dejar tu web inaccesible. Debes estar seguro de lo que estás haciendo.
Todos los procesos de LiteSpeed están configurados para matarse automáticamente a los 300 segundos de iniciarse. Normalmente, cuando una acción tarda más de ese tiempo es porque hay algún problema, por eso el proceso se mata para evitar saturar el servidor con procesos zombis. No obstante, si necesitas eliminar este límite puedes hacerlo.
1. Para algunas URL concretas:
<IfModule Litespeed>
RewriteEngine On
RewriteRule ^fichero\.php$ - [E=noabort:1, E=noconntimeout:1]
RewriteRule ^.*/fichero\.php$ - [E=noabort:1, E=noconntimeout:1]
RewriteRule ^directorio/ - [E=noabort:1, E=noconntimeout:1]
RewriteRule ^directorio/fichero\.php$ - [E=noabort:1, E=noconntimeout:1]
</IfModule>
^fichero.php$aplica al archivofichero.phpen la raíz:^asegura que la URL empiece por "fichero.php" y$garantiza que no haya nada después de ".php".^.*/fichero.php$aplica a cualquier archivo llamadofichero.php, esté en el directorio que esté.^directorio/aplica a cualquier URL que empiece por "directorio/": afecta a todos los archivos y subdirectorios dentro de/directorio.^directorio/fichero.php$aplica específicamente al archivofichero.phpdentro dedirectorio.
Si no sabes a qué fichero debes ampliarle el tiempo de ejecución, puedes averiguarlo ejecutando este comando en la Terminal de cPanel:
top -c
2. Para todas las URL:
No te recomendamos eliminar el timeout para todas las páginas: en el 99 % de los casos solo hace falta en algún fichero concreto (usa el método 1). Si aun así necesitas eliminarlo globalmente, estas son las directivas:
<IfModule Litespeed>
RewriteEngine On
RewriteRule .* - [E=noabort:1, E=noconntimeout:1]
</IfModule>
<IfModule Litespeed>
SetEnv noabort 1
SetEnv noconntimeout 1
</IfModule>
Si tu servidor se ha saturado y tu web está inaccesible
Accede al cPanel del dominio en cuestión y pincha en el botón "Terminal".
Se abrirá una terminal donde puedes matar todos los procesos ejecutando:
kill -9 -1