Velocidad al cargar página web

Estoy tratando de optimizar la página principal de una web. Me explico:

Es una web de imágenes, en disco hay 137 carpetas con imágenes.

Bien, la aplicación lo que hace es recorrer el directorio donde están la carpetas, toma su nombre, selecciona una imagen y con esos datos, llena una <table>, bueno, pues hacer eso tarda alrededor de 13 segundos, mucho a mi entender, por lo que decidí meter el nombre de dichas carpetas en una base de datos, y así ahorrarme el recorrido inicial buscando carpetas, pero aún así sigue tardando 13 segundos, le he quitado llamadas a funciones que podia obviarlas, pero nada, el pasarlo a bbdd no representa ningún beneficio en cuanto a velocidad, me da la sensación que lo que retarda la carga de la página no es de donde proceda la información, bbdd o disco, sino en el dibujado de la tabla con su contenido.

¿Alguien puede darme alguna alternativa?

Respuesta
1

Asi es...
El problema no esta ni en código ni en conexiones, en verdad es el peso de cada una de las imágenes..

Yo trataría de hacer unos tumbnails (imágenes mas pequeñas) las cuales tengan link directo a la imagen real...

Suerte amigo

Bueno, ..., eso también lo he hecho, he reducido el 80% del peso de las imágenes pasando de 15Mb en total a 3MB y sigue tardando lo mismo ...

¿alguna alternativa?

Puedes entrar al archivo de configuracion de Apache... Hay una linea que ondica el limite de menoria y el limite de procesos asi como el tiempobde ehecu ion de cada instruccion... No recuerdo los nombres exactos pero se que puedes cambiarlos... Trata aumentando esos limites... Quien quita y eso ayuda a que sea mas rapida la carga de imagenes

Gracias por contestar.

Todo lo que me comentas lo he probado, incluso he mirado de utilizar la compresión de la web mediante gzip, pero como pone por ahí esto es contraproducente en ocasiones con webs que son de imágenes.

De todas maneras, revisé de nuevo el código y resulta que el error estaba en una función de contar ficheros en carpetas, resulta que a partir de cierta fecha en vez de contarlos hice que buscase ese número en un fichero txt, pues la búsqueda en el fichero txt es lo que tardaba tanto, evidentemente, aprovechando todas las consultas y respuestas tambien he reducido el tamaño de algunas imágenes y les he quitado los datos incrustados (exif), para que así se redujera alrededor de un 33% su peso, aunque ya digo, y habiéndolo comprobado, la mejora de velocidad se ha producido fundamentalmente al retocar la función de contar.

Saludos y gracias.

No pues que agradeces... me da gusto hayas solucionado tu problema... seguimos en contacto cualquier cosa...

Simplemente agradecer el tiempo invertido en aportar soluciones, que aunque no se hayan aplicado, si que sirven para tomarlas como referencia en otras situaciones  o para optimizar código, eso es también importante.

Saludos.

2 respuestas más de otros expertos

Respuesta
1

Después de probar un montón de cosas: reducción de tamaño de las imágenes, quitar datos que pudieran llevar incorporados, que si enviar toda la información con un "echo" en vez de con varios ... He vuelto a revisar el código, he ido quitando funciones, que si formateos, que si ordenaciones ... nada ... hasta que he llegado a la que causa el problema: una función que había montado para contar archivos, esa es la que da el problema, quitándola pasa la carga de 13 segundos a tan solo 4!, cosa que no está mal, además, esos 4 segundos, son con el tamaño real de las imágenes, o sea con los 15MB que ocupan las 139 imágenes, y con los datos incrustados.

Ahora el tema es modificar esa función para conseguir ese dato, pero claro está, en menos tiempo.

Respuesta

Has probado a bajar la calidad de las imágenes que tienes que cargar porque puede ser ese el problema.

Esa solución ya la había pensado, pero ocurre, que tengo la web en un servidor gratuito, eso conlleva dos limitaciones, una, el número de ficheros que puedes tener y dos, un espacio físico limitado, y eso conlleva duplicar las imágenes, ya que estaría bien para la página general, pero luego se necesita ver la imagen en tamaño grande ... por lo que, como digo, tendría que tener las imágenes duplicadas.

Había pensado tambien, no se, si podría ser una mejora, en utilizar solo un "echo" en vez de varios ... me explico, en vez de enviar:

echo "<table ... >";
echo "<tr>";
echo "<td ...>";
echo "...";
echo "</td>";
echo "</tr>";
...
echo "</table>";

enviarlo de una sola vez:

echo "<table ... ><tr><td ...>...</td></tr>...</table>";

No se si esto podría reportar alguna mejoría respecto a la velocidad.

Acabo de probar la alternativa que se me había ocurrido (enviarlo todo con el mismo 'echo') ... no funciona, sigue tardando lo mismo, 13 segundos.

¿Realmente 139 carpetas (me equivoqué no son 137 sino 139), y mostrar una imagen por cada carpeta, de alrededor 100KB (unos 15MB en total), puede tardar tanto? 

Más novedades ... he reducido el tamaño de las imágenes al 20% del que había, pasando de unos 15MB a tan solo 3MB, por lo que la página debería cargarse en menos de 4 segundos, bien ... pues nada, tarda lo mismo, unos 13 segundos, no lo entiendo ... , he limpiado con CCleaner, para borrar todo rastro, para asegurarme de que cargaba lo nuevo y no mediante Caché, y ni aún así.

¿Alguna idea más?

Puede que el problema no este en la programación ni en las imágenes si no en la conexión tuya o en el ordenador en si. Has probado en otro ordenador a lanzar la página haber que sucede, si la tienes para el exterior pon la página y entro para decirte.

La pregunta no admite más respuestas

Más respuestas relacionadas