Los ficheros javascript y css tienen una propiedad interesante, si se concatenan varios y se envían en un solo fichero no debe influir en el resultado final.
Sin embargo, si se concatenan, se pueden cargar con una sola petición, con el consiguiente aumento de rendimiento.
El método que rails proporciona para hacer esto de forma automática es el siguiente (solo en modo producción):
<%= javascript_include_tag 'first.js', 'second.js', :cache => '1_2' %>
Sin embargo esto tiene un problema, normalmente en una aplicación según la página se carga unos ficheros u otros, no es muy práctico ir dándole claves a todas las combinaciones.
Se pueden programar dos helpers para dar las claves de forma automática:
<%= cached_javascript_include_tag 'first.js', 'second.js' %>
<%= cached_stylesheet_link_tag 'first.css', 'second.css' %>
Es importante que las versiones cacheadas tanto de css como de javascript no estén en el svn, a la hora de hacer un despliegue se regenerarán usando la nueva versión de los ficheros.
Aún así, si se quiere que se genere de nuevo la versión cacheada para una página sin desplegar la aplicación ni borrar los ficheros antiguos, se puede usar un sistema de versiones.
<%= cached_javascript_include_tag 'first.js?v=1', 'second.js?v=3' %>
El código de los helpers es el siguiente:
module ApplicationHelper
def cached_javascript_include_tag(*args)
cached_args!(*args)
javascript_include_tag(*args)
end
def cached_stylesheet_link_tag(*args)
cached_args!(*args)
stylesheet_link_tag(*args)
end
def cached_args!(*args)
options = args.extract_options!.stringify_keys
cache_entry = args.map(&:to_s).sort.join('_').gsub!('?', '_')
options[:cache] = cache_entry
args << options
end
end
0 comentarios:
Publicar un comentario