Pues eso. Que he vuelto después de unas vacaciones sin haber escrito nada, y quiero compartir esto :) No es que Chromium o Google Chrome flaqueen en cuanto a velocidad, de hecho me parecen los navegadores más rápidos a la par que completos y personalizables que existen. Pero en este post voy a enseñaros como agilizar aún más estos navegadores, moviendo su caché a la memoria RAM de nuestro ordenador, así que si te interesa sigue leyendo.
El proceso es bastante sencillo, y aunque en el blog que lo descubrí lo hacían de forma gráfica, a mí esto no me funcionaba. Estoy ahora utilizando ArchLinux (distribución Linux que recomiendo enormemente, si se quiere un sistema completamente personalizado y optimizado, además de estable y fiable... y duro), con GNOME 3.12, y el caso es que alacarte (el editor de menús para GNOME) no me dejaba editar la entrada de Google Chrome ni de Chromium. Por tanto, lo hice por terminal y santas pascuas.
Vamos al lío que es lo que os importa. Abrimos un terminal y a golpe de teclado vamos a editar el archivo "desktop" del navegador (el archivo que hace las veces de acceso a la aplicación). En mi caso, utilizo Google Chrome, pero el resultado será el mismo para Chromium editando el archivo chromium-browser.desktop:
Solo tenemos que buscar la línea Exec, que dependiendo de nuestro sistema puede variar, pero que siempre cumple lo mismo: ejecutar la orden con la que lanzar la aplicación. En mi caso, la línea era esta:
Exec=/usr/bin/google-chrome-stable %U
Y le añadimos lo siguiente para forzar que el caché del navegador se cargue en nuestra memoria RAM (todo en una sola línea):
Exec=/usr/bin/google-chrome-stable %U --disk-cache-dir="/tmp/ram/"
Con esto, matamos 2 pájaros de 1 tiro. Primero, conseguimos que la carga de caché de las páginas sea mucho más rápida, ya que la RAM es más rápida que el disco duro. Segundo, conseguimos limpiar un poco nuestro sistema ya que lo que se guarda en RAM se borra al apagar el ordenador, con lo que podemos ahorrar unos 500-700MB de datos de caché, el cual se ubica en ~/.cache/google-chrome . Con eliminar esa carpeta de caché conseguiremos liberar ese espacio, la cual ya no necesitaremos más, pues usaremos la RAM.
Por cierto, cada vez que actualicemos el navegador (sea Google Chrome o Chromium), tendremos que repetir el proceso.
Fuente - Ubuntizando
Actualización: Gracias al lector flipefr, podemos hacer todo esto de manera automática en ArchLinux, cada vez que actualicemos Google Chrome.
El siguiente script facilitado por el lector actualizará Google Chrome (entre otros) y reemplazará la línea ya citada en el acceso directo por la nueva con la opción de caché en RAM. Este script es compatible con otros sistemas Linux, siendo necesario en su caso reemplazar la orden de actualización por la del sistema que utilizemos (por ejemplo, por un sudo apt-get update && sudo apt-get upgrade en Debian, Ubuntu y derivados). En caso de utilizar Chromium, bastará de nuevo con cambiar los respectivos archivos y lanzadores por los de Chromium, como ya se explicó anteriormente. Sin más, os dejo el script (solo es necesario copiar y pegar, por el ajuste de línea de Blogger pueden aparecer saltos de línea donde no los hay):
Fuente - Ubuntizando
El siguiente script facilitado por el lector actualizará Google Chrome (entre otros) y reemplazará la línea ya citada en el acceso directo por la nueva con la opción de caché en RAM. Este script es compatible con otros sistemas Linux, siendo necesario en su caso reemplazar la orden de actualización por la del sistema que utilizemos (por ejemplo, por un sudo apt-get update && sudo apt-get upgrade en Debian, Ubuntu y derivados). En caso de utilizar Chromium, bastará de nuevo con cambiar los respectivos archivos y lanzadores por los de Chromium, como ya se explicó anteriormente. Sin más, os dejo el script (solo es necesario copiar y pegar, por el ajuste de línea de Blogger pueden aparecer saltos de línea donde no los hay):
#!/bin/bash
yaourt -Syyua --devel
sudo chmod a+w /usr/share/applications/google-chrome.desktop
file=/usr/share/applications/google-chrome.desktop
if [ $(grep "Exec=/usr/bin/google-chrome-stable %U" $file | wc -c) -le 38 ]; then
sed -e 's/%U/%U --disk-cache-dir="\/tmp\/ram\/"/g' $file > .tmp
cp .tmp $file;rm .tmp
fi
rm -rf ~/.cache/google-chrome
Marchando una de script
ResponderEliminarDigamos que se llama actualizar.sh
yaourt -Syyu --devel --aur
file=/usr/share/applications/google-chrome.desktop
words=$(echo "$(sed -e 's/Exec=\/usr\/bin\/google-chrome-browser %U/Exec=\/usr\/bin\/google-chrome-browser %U --disk-cache-dir="\/tmp\/ram\/"/g' $file)" | grep "Exec=/usr/bin/google-chrome-browser %U" | wc -c)
if [ $words -le 68 ]; then
echo "$(sed -e 's/Exec=\/usr\/bin\/google-chrome-browser %U/Exec=\/usr\/bin\/google-chrome-browser %U --disk-cache-dir="\/tmp\/ram\/"/g' $file)" > $file
fi
rm -rf ~/.cache/google-chrome
Me corrijo, ese script no funciona por estar hecho a la carrera me he dado cuenta tarde, ahí va una versión mas limpia y probada
ResponderEliminaryaourt -Syyu --devel --aur
file=/usr/share/applications/google-chrome.desktop
if [ $(grep "Exec=/usr/bin/google-chrome-stable %U" $file | wc -c) -le 38 ]; then
sed -e 's/%U/%U --disk-cache-dir="\/tmp\/ram\/"/g' $file > .tmp
cp .tmp $file;rm .tmp
fi
rm -rf ~/.cache/google-chrome
para que funcione deberiamos dar permisos de escrito al usuario sobre el fichero /usr/share/applications/google-chrome.desktop con chmod y asi no nos pide siempre la contraseña, en caso de no querer cambiarlos ejecutar toda la parte despues del yaourt con un sudo en un fichero independiente
O_O... Joder, y perdón por la expresión pero anonadado me hayo. No lo habría hecho tan birn ni de lejos xD Muchísimas gracias por el aporte. Editaré el post para incluir tu script, si no te importa, porque merece la pena compartirlo y que no se pierda en estos comentarios. Da gusto volver a escribir con comentarios como este :) De nuevo mil gracias ^^
ResponderEliminarPD: Por cierto, no sé si entiendo bien el uso de pacman y yaourt (al fin y al cabo termina usando pacman), pero al actualizar el programa, ¿no sobrescribiría el archivo por uno generado nuevamente por pacman? Lo digo porque puede que aunque se modifiquen los permisos de escritura, puede que tras actualizar, sea necesario nuevamente dar estos permisos al usuario. De ser así, la solución podría ser fácil incluyendo esta modificación de los permisos con chmod justo después de la ejecución de yaourt en el script. Si no es así, repito que hablo un poco desde la ignorancia, pues no sé si se mantendrían estos permisos modificados tras la actualización.
Aún así, de nuevo gracias por el trabajo de investigación que me has ahorrado, así da gusto :)
Por supuesto que puedes ponerlo en el post, para eso lo he hecho, incluso creo que aun se podria refinar mas poniendo el sed en una sola linea como hice al principio, pero mejor dejarlo asi que funcoina y tampoco es tan grande.
ResponderEliminarLa diferencia entre yaourt y pacman es que pacman es digamos el oficial, mientras que yaourt es una aplicacion que envuelve a pacman, la idea es que solo se deberia instalar lo que viene en pacman por motivos de seguridad y estabilidad, pero como hay muchas cosas que no son digamos oficiales esta yaourt que lo que hace es decargar el codigo de los repositorios y compilarlo, si un paquete o programa no esta en pacman es muy posible que se pueda encontrar con yaourt, no obstante hay gente que recomienda no usarlo precisamente por motivos de seguridad y estabilidad dado que siempre puedes instalar algo que metas la pata, mismo motivo que te avisa de no usarlo nunca con sudo, dado que si compilas como root a saber que puede pasar, mas info en la wiki https://wiki.archlinux.org/index.php/yaourt
de las opciones que le paso ahi significan:
"-Syyu": fuerza a yaourt a descargar las últimas listas de paquetes de los repositorios (a veces con "-Syu" no descarga las últimas lista, por eso usamos "-Syyu").
"--devel": comprueba y actualiza si es necesario los programas que hayamos instalado con subversion, hg, git y cvs.
"--aur": actualiza los paquetes que tengamos instalados desde el repositorio AUR si es necesario.
El fichero /usr/share/applications/google-chrome.desktop como su nombre indica es un fichero desktop, es decir, no es mas que un acceso directo de toda la vida, cambiar el programa no deberia implicar cambiar el acceso directo, solo cambiara en el caso de que cambie la ubicacion del chrome y eso no va a pasar, asi que me atreveria a afirmar que por muchas actualizaciones que les hagas al chrome el .desktop no se va a ver afectado. De todas formas siempre puedes comprobar los permisos despues de actualizar chrome para ver si ha cambaido algo con el "ls -l"
En el caso de que se cambien los permisos no bastaria con hacer un chmod 777 /usr/share/applications/google-chrome.desktop dado que te pedira de nuevo la contraseña de root, seria mejor solucion ejecutar el script con un sudo y quitarse de problemas, algo asi como sudo chrome-ram.sh, este script solo llevaria la parte que va de file hacia el final, pero no la linea del yaourt por lo que he dicho antes de los peligros de compilar en modo root.
Ya esta, a lo mejor me equivoco, pero que aproveche.
Sí, gracias por la explicación con respecto a yaourt y pacman (y esa parte del funcionamiento), hasta ahí llego. Pero me refiero a que ese fichero puede cambiar porque de hecho cambia cada vez que se actualiza Chrome, es decir, el fichero vuelve a tener el contenido original, pues la opción que agregamos al lanzador (--disk-cache-dir="/tmp/ram/") desaparece y es necesario incluirla de nuevo cada vez.
ResponderEliminarEs por esto por lo que pienso que no bastará con cambiar los permisos, pues yaourt (pacman utilizado por yaourt) regenerará el acceso directo a la aplicación, o al menos es la única explicación que veo a que cambie este contenido del fichero.
Aún así se podría incluir ese chmod a+w (por ejemplo, dando permiso a todos para la escritura), y bueno, pedirá la contraseña de sudo, pero seguiremos teniendo este fantástico script que ahorra mucho trabajo, como tener que abrir un editor de texto y añadir la citada opción.
Tambien es verdad, eso ya como tu veas.
ResponderEliminar