Hace 14 años | Por stygyan a code.google.com
Publicado hace 14 años por stygyan a code.google.com

Un compendio de artículos acerca de la optimización en la Web: CSS, HTML, Javascript, Imágenes... de obligada lectura, casi.

Comentarios

antihoygan

#10 Yo añadiría:
- Informarse bien sobre los tres tipos de cache de mysql (key, table y query)
La query cache es la que hace que, con consultas consecutivas, de la segunda en adelante vaya más rápido.
- Usar NO_SQL_CACHE en la consulta para hacer pruebas (SELECT NO_SQL_CACHE campos FROM tabla...)

Por cierto, no sabía que se podían usar procedimientos almacenados, gracias por la info

cosmonauta

En optimización de php fallan como escopetas de feria. Por ejemplo, se olvidan que php5 es orientado a objetos y crea referencias cuando igualas variables.

Lo que dicen aquí es simplemente incorrecto:

Don't copy variables for no reason.

Sometimes PHP novices attempt to make their code "cleaner" by copying predefined variables to variables with shorter names. What this actually results in is doubled memory consumption, and therefore, slow scripts. In the following example, imagine if a malicious user had inserted 512KB worth of characters into a textarea field. This would result in 1MB of memory being used!

BAD:
$description = _$_POST['description'];_
echo $description;

GOOD:
echo _$_POST['description'];_

prejudice

#4
pruben@ruben-laptop:~$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 'evil'[1:3]
'vi'
>>>

PerroVerd

Don't use concatenation with echo.

Many novice PHP programmers are unaware that you can pass multiple variables to the echo, separated by commas, instead of concatenating them first. Using the decimal character, shown in the first example, results in poor performance, because the PHP engine must first concatenate all of the variables together and then print, whereas in the second example, it prints them all in the order provided.

BAD:
echo 'Hello, my name is' . $firstName . $lastName . ' and I live in ' . $city;

GOOD:
echo 'Hello, my name is' , $firstName , $lastName , ' and I live in ' , $city;

Zydeco

#2 ¡no puede ser! vi is a subset of evil!

angelitoMagno

¡En Google usan VI! http://code.google.com/intl/es/speed/articles/optimizing-php.html

Por cierto, me encanta el "inglés for dummies" que usan la gente de Google

Ander46

Por fin!!! alguien que me entiende!!!

Cuantos clientes me habran dicho que eso de optimizar paginas es una mierda, que con el ancho de banda que tenemos no vale pa nada.... que ellos quieren una pagina en flash tope guay que tenga ruidoss... en fin.

angelitoMagno

Por mi experiencia, uno de los métodos más sencillos y efectivos para optimizar una web es:

- Usar correctamente los índices en la BD.

Con un simple "clic" en el PhpMyAdmin o una simple consulta SQL, he visto reducir el tiempo de carga de una página de 4-5 segundos a menos de medio segundo.

angelitoMagno

#14 No se trata de lo que ocupe o deje de ocupar el archivo PHP. El problema está en:

- Tiempo de ejecución del PHP
- Tamaño del archivo HTML generado

El tamaño del archivo PHP no importa en el 99% de los casos. El tiempo de ejecución usando ' es menor que usando " y el tamaño de archivo HTML generado es el mismo.

Además personalmente considero que las ' son más estéticas

neo22s

#11
no me refiero a Mysql los tips, pero gracias, ya que desconocía esto y ahora sólo uso MySql

en cuanto a los procedimientos , en mysql si se puede (creo no se mucho de mysql)si te dan los permisos necesarios...si puedes ese es el problema de siempre de un hosting compartido, nada como tu servidor dedicado

amoebius

Son buenos consejos todos, pero mucha pompa me parece para tan poca chicha. El vídeo es muy efectista pero no es la vía más eficaz para comunicar este tipo de contenido.

D

Da igual como lo hagas, luego hay que cerdearlo todo para ie

z

Qué consejos más excelentes!
Esto definitivamente va a mis páginas favoritas...

antihoygan

Muchas gracias por el enlace, por ahora me he leído el de Page Speed y el de PHP para novatos y me han ayudado mucho.

Wallack

En el PHP lo mejor es cerrar el php, tal que así:

...?>This is a string

prejudice

#16 Este mundo está lleno de gente que no sabe lo que quiere, pero que estaría dispuesta a cruzar el infierno para conseguirlo

Muchas páginas hechas en flash, carecen de funcionalidad, escalabilidad, usabilidad (a veces el usuario tiene que esperar a que terminen las animaciones entre cada cambio de producto), y no son bien indexadas por los buscadores. Son como un batmovil muy bonito pero hecho de cartonpiedra

i

#10 Si realmente se producen embudos en una BDD relacional creo que es hora de hacer un cambio y saltar a BD's más escalables y no relacionales (principios de Cloud Computing). Con una buena normalización (sin pasarse, puede llegar a ser ilegible la capa de persistencia) se consigue unos milisegundos en consultas donde los índices tienen bastantes ramas.

Si bien todo eso ayuda, también hay que contar con un buen administrador de BDD que no deje que el árbol de nuestras tablas parezca la torre de Pisa.

En Java, para persistencia tienes soluciones como Hibernate, que aunque cierran bastantes optimizaciones, puedes configurar las consultas básicas, para añadir cosas como lo que dice #11, mediante los XML o usar tus propias estrategias de traducción HQL->SQL. Además utiliza EHCache, y realiza un uso bastante prudente, lo cual conseguimos aún más optimización. Sin embargo, en tablas grandes se pira un poco de madre, ya que el ORM, a lo que hay que sumarle que la profundida por defecto es 3, acaba ralentizando la consulta porque termina leyendo unas 5 o 6 tablas como mínimo (depende del sistema y la configuración).

D

Algún detalle más:

http://code.google.com/intl/es/speed/page-speed/docs/payload.html#CompressImages

Lo de PNGOut es sencillo te permite recomprimir una imagen PNG sin perder calidad. Eso si, tarda un poco según el tamaño de la imagen, y suele bajar un 20% aproximadamente. Si usáis Irfanview, podéis usar este programa al guardar una imagen activando una opción del guardado en PNG.

D

#0 #5 #10 #19 Buenísimos consejos. ¡Gracias!

Me vienen muy bien dado que trabajo con estas cosillas (soy autodidacta).

Por cierto, viendo esto → http://tinyurl.com/ltzb5z qué ganas de que se estandarize el uso de HTML 5.

D

#3 La solución la tenemos en la mano. No desarrolles tu propio HTML, usa frameworks que abstraen esta traducción. Además te da la ventaja de que la tecnología la usas como bridge entre tu interfaz y el código "nativo" en este caso el HTML.

¿Pero qué burrada me estás contando? ¿dejar que un framework ponga el html a su cuenta y riesgo?

De esta manera, todas las aplicaciones desarrolladas actualmente, si quieren cambiar a html5 tendrán de "redesarrollarse" o adaptarse al nuevo lenguaje. Con tecnologías como Groovy, Grails, GWT, Google Gears, etc, te olvidas un poco del HTML (casi diría que del todo) y consigues desacoplar tu implementación de la tecnología final de presentación. Además, digamos, que es más fácil delegar en este tipo de soluciones que saberte al dedo todos los tricks para optimizar tu página.

Precisamente estoy harto de los diseñadores wbe de palo que usan el dreanweaver con su html de mierda y su código de mierda.

Un ejemplo de DW: ante sme pego un tiro que diseñar con un framewrik.

Viva el notepad!

D

"BAD:
$output = "This is a plain string";

GOOD:
$output = 'This is a plain string';

BAD: $type = "mixed";
$output = "This is a $type string";

GOOD:
$type = 'mixed';
$output = 'This is a ' . $type .' string';"

Esto no por favor, jamás cambiaré mis " por ', solo cuando hay mucho html y no quiero poner " y olvidénse de cambiar "This is a $type string" por 'This is a ' . $type .' string', ¡ocupa más!

D

Meneo y a favoritos para leérmelo entero con calma (antes me lo he leído por encima, eh? ).

D

Viva!

i

#26 frameworks como GWT usan disgregadores, es decir, generan varias interfaces (de modo transparente tanto para el administrador que despliega la aplicación como para el dev) y en el punto de entrada disgrega los comportamientos de los componentes en función del UserAgent.

D

#29 pues sigo haciendo mis html y php a pelo. No sé tú, pero aún ningún IDE o framework me hace lo que yo quiero en css.

Chikedor

Pues no estaría mal que para hacer la web más rápida su navegador consumiese menos memoria roll

i

#27 a su cuenta y riesgo? Pero tú en qué época vives? Conoces lo que es el CDD? O sea, pretendes seguir haciendo llamaditas AJAX a pelo? Estructurando los paneles (div en este caso) por ti mismo?

Todos los frameworks de desarrollo web (al menos en j2ee) están abandonando ese estilo de programación porque es mucho más rentable el Component Driven Development, básicamente porque te olvidas de cómo está hecho el componente, sabes que tiene X fucionalidad y punto. Si quieres modificar la traducción tienes la capacidad de extenderlo, si necesitas saber cómo traduce tienes el código fuente.

Es mucho más sencillo trabajar como ofrece, por ejemplo GWT, donde tú trabajas con una estructura de layouts y es el GWTCompiler quién traduce eso a JS. Que al final todo serán inserciones HTML. Si quieres seguir haciendo las cosas completamente a mano te has equivocado de época. Vuelve a las tarjetas perforadas y déjate de ir de sabio.

Lo que estoy viendo es que no tienes ni idea de lo que es un framework y ni lo que es GWT, Groovy o Google Gears. Tú hablas de DreamWeaver, el cuál no es un framework, si no un IDE. Pero tú a lo tuyo. Lo dicho, si no comprendes, no llames burro a nadie, que listos sobran