2010-03-10 15 views
15

Cada página de mi sitio web se representa con PHP.¿Cuántas PHP incluye son demasiadas?

Cada archivo PHP utiliza alrededor de 10 incluye. Por lo tanto, para cada página que se muestra, el servidor necesita buscar 10 archivos, además del resto de sus funciones (MySQL, etc.).

¿Debo combinarlos en un solo archivo de inclusión? ¿Eso hará CUALQUIER diferencia en la velocidad del mundo real? No es una tarea trivial, ya que habría un espagueti de alcance variable para resolver.

Respuesta

24

Los archivos de inclusión se procesan en el servidor, por lo que no son "recuperados" por el navegador. La diferencia de rendimiento del uso incluye contra copiar y pegar el código o consolidar archivos es tan insignificante (y supongo que estamos hablando en el rango de 10   ms a 100   ms, como máximo), que no es No vale la pena.

Siéntase libre de include y require para su contenido. El código de limpieza es sustancialmente más importante que afeitar menos de 100   ms de una carga de página. Si está creando algo donde el tiempo es tan crítico, no debería usar PHP de todos modos.

+0

Creo que es más complicado que eso, porque depende de si los archivos son leídos desde la memoria o disco. Desde el disco: puede tomar varios ms, depende de si está fragmentado y el tamaño del archivo. (el sistema operativo puede almacenar en caché el archivo, o el dispositivo HDD en sí) .. – Dor

+3

@Dor no subestime las capacidades de la memoria caché del disco :) la fragmentación del disco nunca afectará su sitio –

+0

Incluso puede reducir el impacto en el rendimiento al aumentar realpatch_cache_size si tiene muchos archivos incluidos – gagarine

0

Aunque las operaciones de E/S de disco se encuentran entre los mayores comedores de rendimiento, un sitio regular no notará ninguna cantidad razonable de includes. Antes de que tenga problemas con los includes, probablemente ya tenga algún caché de opcode que también elimine este problema.

0

include\ and requires` única columna abierta en el lado del servidor, pero que podría ser consumming tiempo dependiendo del hardware/sistema de archivos, etc.

De todos modos, si se puede, utilizar autoloader. Solo los archivos necesarios se cargarán de esa manera.

Luego, si cree que los archivos incluidos son una fuente de desaceleración (y creo que hay muchos otros puntos que debe buscar para mejorar antes), puede intentar fusionar automáticamente los archivos. Aún tiene un archivo por clase al desarrollar, pero puede compilar un archivo que contenga la definición de cada clase para tener solo un include (algo así como cat <all your included file>.php > to_include.php).

3

Lo que toma tiempo es descubrir dónde están ubicados los archivos en la ruta include. Si tiene varias ubicaciones en su ruta de inclusión, PHP buscará cada ubicación hasta que encuentre el archivo o falle (en cuyo caso arrojará un error). Es por eso que debe colocar la ruta de inclusión donde se encuentran la mayoría de los archivos incluidos en la parte superior de la ruta de inclusión.

Si utiliza rutas absolutas en su ruta de inclusión, PHP almacenará en caché la ruta en la memoria caché realpath, pero tenga en cuenta que esto se agota rápidamente. Entonces sí, incluir diez archivos es potencialmente más lento que incluir un archivo grande, simplemente porque PHP tiene que verificar la ruta de inclusión más a menudo. Sin embargo, a menos que su servidor web sea una máquina realmente débil, diez archivos no son suficientes para causar un impacto. Esto solo resulta interesante cuando se incluyen cientos de archivos o tienen muchas ubicaciones para buscar, en cuyo caso debe usar un caché OpCode de todos modos.

También tenga en cuenta que al incluir archivos, no es una buena práctica incluir todos y cada uno de los archivos desde el principio, ya que podría incluir archivos que la aplicación nunca llama para una solicitud específica.


Referencia

Cuestiones relacionadas