No olvidemos las consultas SQL. El problema de hoy en día que me encuentro es:
Bases de datos no optimizadas
"Programadores" sin conocimientos en BBDD relacionales
Captain Obvious tips (sql server):
1. Usa la clausula Top después de select si sabes cuantos registros te han de devolver.
2. No devuelvas * por omisión, seguramente sólo usarás un par de campos, a no ser que sea inevitable.
3. Si necesitas registro aleatorio usa order by newid() , y no inventes la… » ver todo el comentario
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.
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.
#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
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
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;
#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
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.
#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
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.
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.
#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… » ver todo el comentario
#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
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!
#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.
#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… » ver todo el comentario
Bases de datos no optimizadas
"Programadores" sin conocimientos en BBDD relacionales
Captain Obvious tips (sql server):
1. Usa la clausula Top después de select si sabes cuantos registros te han de devolver.
2. No devuelvas * por omisión, seguramente sólo usarás un par de campos, a no ser que sea inevitable.
3. Si necesitas registro aleatorio usa order by newid() , y no inventes la… » ver todo el comentario
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.
- 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
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
… » ver todo el comentario
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'
>>>
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;
Por cierto, me encanta el "inglés for dummies" que usan la gente de Google
- 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
- 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.
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
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.
Esto definitivamente va a mis páginas favoritas...
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… » ver todo el comentario
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
...?>This is a <?=$type?> string<?php...
Yo lo hago así, no uso echos a no ser que sean para mostrar una única variable o para cosas muy específicas.
Me vienen muy bien dado que trabajo con estas cosillas (soy autodidacta).
Por cierto, viendo esto → tinyurl.com/ltzb5z qué ganas de que se estandarize el uso de HTML 5.
$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!
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… » ver todo el comentario