Para un sitio con mucho trafico (tipo Sumavisos en un tiempo :) y muchos objetos distintos cacheados, el comportamiento por defecto del ActiveSupport::Cache::FileStore deja mucho que desear: como guarda todos los archivos al mismo directorio, uno puede facilmente terminar con un directorio con 100.000 archivos.
Entonces, el filesystem sufre cuando el ActiveSupport quiere chequear si tal cache-archivo existe y si existe abrirlo. Para eso, monkeypatcheamos un poquito el FileStore para que particione los caches en distintos directorios.
De esta manera los archivos quedan distribuidos en distintos directorios y el lookup deberia ser mas rapido.
Magia Ruby + Magia Rails, poner esto en algun lugar (por ejemplo, /config/initializers)
class ActiveSupport::Cache::FileStore
def real_file_path_with_partition(name)
real_file_path_without_partition(partition_cache_key(name))
end
def partition_cache_key(name)
k = MD5.hexdigest(name)
key = k[1 .. 1] + "/"
key += k[2 .. 2] + "/"
key += k[3 .. 3] + "/"
key += k[4 .. 4] + "/"
key += k[5 .. 5] + "/"
return key + name
end
alias_method_chain :real_file_path,:partition
end
Nota, esta version del codigo no es la original. Esta esta mucho mejor y anda con el TimedFileStore que permite expirar el cache segun su antiguedad
Esto es una boludez y da info muy interesante.
Basicamente se modifican todos los links “salientes” del documento para que onclick llamen a la funcion de Analytics que trackea una pagina:
pageTracker._trackPageview(‘/outgoing/’+e.href)
Si vd tiene un dojo ahi se hace asi:
dojo.query(“a”).forEach(function(e){
if (e.href.length > 0 && e.href.indexOf(window.location.hostname) == -1){
dojo.connect(e,”click”,function() {
pageTracker._trackPageview(‘/outgoing/’+e.href);
});
}
})
Tambien hay una mencion en el help de Analytics
Dragandrop a la barra de bookmarks:
LimpiarClarin
se puede hacer lo mismo con flashblock y amigos; es algo salvaje.