1 of 71

Optimización de Rails para mortales

Comienza a optimizar el tiempo de carga de tu aplicación en Rals.

Uriel - Desarrollador Web

2 of 71

3 of 71

40% más rápido

4 of 71

Medición

Servidor y la base de datos

Frontend

Recursos adicionales

5 of 71

MEDICIÓN

6 of 71

¿Por qué medir?

7 of 71

Comparar el progreso

Qué optimizar

8 of 71

80% of the output will come from 20% of the input

9 of 71

Herramientas de medición

10 of 71

Rack::MiniProfiler

11 of 71

Complete Guide to Rails Performance

12 of 71

13 of 71

14 of 71

15 of 71

El 20% que produce el 80% del tiempo

en tu código.

16 of 71

17 of 71

Servidor y la base de datos

18 of 71

Actualiza tus versiones de Ruby y de RoR

19 of 71

20 of 71

21 of 71

22 of 71

La base de datos y consultas

23 of 71

Indexes

24 of 71

Falta de índices

25 of 71

~20ms

26 of 71

27 of 71

~10ms

28 of 71

Mal uso de índices

29 of 71

0.0s

2.7s

30 of 71

Agrega índices necesarios

Usa los campos con índices para ordenar/filtrar

Revisa tus índices

lol_dba gem

31 of 71

Contar relaciones

32 of 71

~800ms

33 of 71

~6ms

34 of 71

N+1 queries

35 of 71

36 of 71

37 of 71

Course.all.includes(:my_courses)

Course.all.preload(:my_courses)

Course.all.eager_load(:my_courses)

38 of 71

39 of 71

Bullet

40 of 71

Rack::MiniProfiler

41 of 71

Rack::MiniProfiler

42 of 71

~800ms - 1 query

185ms sin la precarga. ~120 queries

43 of 71

Counts con select

44 of 71

~140ms

45 of 71

Evita N+1 queries

Evalúa las soluciones

Cuenta en un select

Coloca counter caches

46 of 71

Optimizar para el Frontend

47 of 71

Medición en el Frontend.

48 of 71

Consola de desarrolladores.

49 of 71

Rack::MiniProfiler

50 of 71

Activa la compresión de assets.

51 of 71

Gzip

Brotli

Deflate

Entre otros

52 of 71

Archivo

Tamaño Original

Brotli

Gzip

application.js

1.1mb

330kb

360kb

application.css

590kb

77kb

79kb

53 of 71

54 of 71

55 of 71

56 of 71

57 of 71

Para qué NO sirve comprimir assets

58 of 71

59 of 71

Archivos independientes para features de temporada

Evalúa cada nueva librería

Define un límite para el tamaño de tus assets

Revisa periódicamente tus dependencias

60 of 71

Caching local de tus assets

61 of 71

62 of 71

25% de los usuarios no estaba usando el caché

Los archivos duraban máximo 42 horas en el caché

63 of 71

64 of 71

65 of 71

66 of 71

67 of 71

68 of 71

Recursos adicionales

69 of 71

70 of 71

71 of 71

Fin. Muchas gracias 🙏