2010-08-28 9 views
13

Mi pregunta es si usar múltiples PHP includes() es o no una mala idea. La única razón por la que pregunto es porque siempre escucho tener demasiadas hojas de estilo o scripts en un sitio, crea más solicitudes HTTP y ralentiza la carga de la página. Me preguntaba lo mismo sobre PHP.Usar demasiados PHP incluye una mala idea?

Respuesta

27

La respuesta detallada:

Cada CSS o JS archivo de referencia en una página web es en realidad descabellada través de la red por el navegador, lo que implica a menudo 100s de milisegundos o más de latencia de la red. Las solicitudes al mismo servidor son (por convención, aunque no obligatorias) serializadas una o dos a la vez, por lo que estas demoras se acumulan.

Los archivos de inclusión de PHP, por otro lado, se procesan en el servidor. En lugar de cientos de milisegundos, el acceso al disco local será de 10 s de milisegundos o menos, y si se almacena en caché, se accederá a la memoria directa, que es aún más rápido.

Si utiliza algo como http://eaccelerator.net/ o http://php.net/manual/en/book.apc.php, entonces su código PHP se precompilará en el servidor una vez, y ni siquiera importa si está incluyendo archivos o los está volcando todos en un solo lugar.

La respuesta corta:

No se preocupe por ella. 99 veces de cada 100 con este problema, los beneficios de una mejor organización del código superan el aumento del rendimiento.

+0

Pensé que debe haber alguna diferencia integral entre CSS, etc. y las páginas de PHP. Muchas gracias. – Smandoli

+1

La mejor parte de tu respuesta fue explicar cómo funcionaban JS y CSS. Desearía que más personas profundizaran en sus respuestas. ¡Gracias! : D Por cierto, me encontré con este proyecto y esta es una herramienta para precompilar código como las herramientas anteriores? – NessDan

+0

Cuando se utiliza el caché de código de operación, más incluido (= archivos más pequeños), es un poco más rápido que todo-en-uno-gran-archivo. Pero no deberías preocuparte por esto. Enfóquese en la legibilidad del código en su lugar. – Jacco

5

El uso de includes ayuda con la organización del código, y no es un obstáculo en sí mismo. Si está cargando un montón de cosas que no necesita, eso ralentizará las cosas, pero ese es otro problema. Aclaración: al incluir páginas, tenga en cuenta lo que está agregando a la carga; no incluya descuidadamente recursos innecesarios.

0

Realmente depende de lo que quiere hacer, quiero decir, si tiene un código que se usa todo el tiempo, es realmente conveniente incluirlo en lugar de copiar y pegar todo el tiempo y eso hará que su código más claro y no más lento, pero si incluye todas las funciones o clases que ha escrito en sus archivos sin usarlas, por supuesto, eso no es una buena práctica ... Sugeriría usar un marco (como codeigniter u otra cosa que le parezca conveniente) porque realmente ayuda a despejar esto ... ¡buena suerte!

0

La única razón por la que estoy pidiendo es porque Siempre escucho tener demasiados hojas de estilo o secuencias de comandos en un sitio crea más peticiones HTTP y ralentiza carga de la página. Me preguntaba lo mismo sobre PHP.

Observe que una solicitud HTTP es varias órdenes de magnitud más lenta que un PHP.

Varios peticiones HTTP -> Cliente tiene que pedir y aceptar sobre el alambre varios archivos
Varios PHP incluye -> Cliente tiene que pedir y aceptar sólo un archivo

La incluye, obviamente, tendrá una penalización de servidor. Pero con tu pregunta ... no te preocupes. Solo en proyectos PHP a gran escala enfrentarás tales problemas.

1

Como ya he dicho, el uso de múltiples PHP incluye ayuda a mantener su código organizado, por lo que no es una mala idea. Se convertirá en un problema cuando se usen demasiados, porque el servidor web tendrá que realizar una operación de E/S por cada inclusión que tenga.

Si tiene una aplicación web grande, puede aumentarla usando PHP accelerator, que almacena en caché los datos y el código compilado del compilador de códigos de bytes de PHP en la memoria compartida. Si tiene muchas inclusiones de PHP en un archivo específico, se realizarán solo una vez. Las llamadas adicionales a ese archivo presionarán la memoria caché, por lo que no se realizará ninguna solicitud de PHP.

-1

PHP puede detectar el archivo incluido ya que puede usar la función include_once() en lugar de include().

Cuestiones relacionadas