Impacto del tiempo de carga de htaccess

15

En general, hay dos posibilidades de manejar cosas en Apache:

  • hacer configuraciones para carpetas una por una usando el archivo htaccess

  • renunciar completamente a htaccess y poner todas las reglas en httpd.conf

El uso de htaccess es un problema de tiempo de carga. Quiero saber, ¿qué tan costoso en términos de tiempo de carga es el uso de htaccess? ¿Hay alguna prueba?

Evgeniy
fuente

Respuestas:

22

La recomendación del proyecto Apache es:

En general, solo debe usar archivos .htaccess cuando no tiene acceso al archivo de configuración del servidor principal. ... un error común es que las directivas de autenticación de usuario y mod_rewrite deben ir en los .htaccessarchivos.

Por lo tanto, establezca AllowOverride Noney todas sus otras directivas en el httpd.conf principal (y / o las subsecciones que usted Include)


Cuando Apache no está configurado con AllowOverride Noneusted, ya se produce una penalización de rendimiento (menor), independientemente de si .htaccessse utilizan archivos o no .

Esto se debe a que, para cada solicitud, Apache deberá verificar la presencia de un .htaccessarchivo potencial en cada (sub) directorio que conduzca al recurso solicitado. Por ejemplo, cuando se solicita un archivo de un directorio / www / htdocs / example, apache debe buscar los siguientes archivos:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

Y así, para cada acceso a archivos fuera de ese directorio, hay 4 accesos adicionales al sistema de archivos, incluso si ninguno de esos archivos está presente. (Si AllowOveride está configurado para /)

La llamada al sistema utilizada para ese ( man 2 stat) en sí misma no es tan costosa y, por lo general, se usa la memoria caché del sistema de archivos en lugar de sondear el disco real, lo que limita los requisitos reales de E / S, pero aún así puede sumar, como se argumenta en este artículo .


Cuando uno o más .htaccessarchivos reales están realmente presentes, apache todavía necesita openleerlo (desencadenando otra operación de lectura de E / S y, por lo general, también una operación de escritura de E / S para actualizar el atimeatributo del sistema de archivos ) y analizarlo antes de que se pueda aplicar la lógica.

A diferencia de cuando sus directivas están en main httpd.conf, que solo necesita un apache para analizarlas una vez, al inicio, cada .htaccessarchivo debe interpretarse nuevamente para cada solicitud.

El costo, además de las operaciones de E / S, de analizar los archivos .htaccess depende de su complejidad.

Eso requerirá una evaluación comparativa cuidadosa para determinar.

HBruijn
fuente
4

El gasto depende de cuán poderoso es el servidor, en particular su subsistema de E / S de almacenamiento y si hay algún almacenamiento en caché involucrado.

La forma de probarlo es configurar su sistema con .htacess y cargarlo de la misma manera que lo haría con cualquier servidor web. Luego configure el sistema sin .htaccess y ejecute las mismas pruebas.

Compare y contraste los resultados para sus sistemas configurados.

usuario9517
fuente
1

No creo que haya una sola respuesta correcta para su pregunta. Hay muchas variables que pueden afectar el tiempo de carga de htaccess:

  • Estructura de la carpeta del sitio: todos los archivos .htaccess de cada carpeta se cargan cada vez que se abre la página.
  • ¿Cuánto dura el archivo htaccess: 200 líneas frente a 3500 líneas? Existe una gran diferencia.
  • Configuración de .htaccess: las reglas de reescritura y redireccionamiento pueden ser más pesadas que otras (y no son las únicas).
  • La conexión de red en el lado del cliente puede afectar el tiempo de carga. En mi opinión, puede probarlo desde más de un lugar y tomar el tiempo promedio como referencia.
  • ab: la herramienta de evaluación comparativa del servidor HTTP Apache puede ayudarlo

más información:

HEDMON
fuente
1

He probado con y sin .htaccess y realmente no pude encontrar ninguna diferencia en velocidad o sobrecarga en absoluto. De acuerdo, solo ejecuto 16 sitios y es un servidor súper rápido, por lo que en mi caso el seguimiento de milisegundos es casi imposible. En un servidor que ejecuta cientos de sitios, la sobrecarga puede ser notable, por lo que @Iain dijo probar y ver.

Personalmente hago todo usando el archivo .conf para un host virtual y no el .htaccess, me da un control absoluto sobre todo, está más limpio y se carga una vez en la memoria de apache. Incluso mis reglas de reescritura de WordPress están en mis archivos .conf para que nunca se rompan.

MitchellK
fuente
¿Qué tan rápido es super rápido?
James Kirkby
@ James Kirkby Te enviaré las especificaciones exactas del servidor más tarde, fuera de la oficina ahora mismo. Estoy ejecutando todo en contenedores Proxmox. Mi servidor web y mis 16 sitios de WordPress tienen un 91-96 en Google Pagespeed y siempre estoy ajustando y optimizando.
MitchellK
@JamesKirkby Tiene 2 procesadores Core 6 x 6 y 64 Gb de RAM con Ubuntu 14.04, Apache 2.4.7 y PHP-FPM. Es una pequeña bestia de nota, estoy extasiado con su rendimiento.
MitchellK