Compass usa chunky_png para representar los sprites. Agrega un hash al final del archivo para obligar a las memorias caché a descargar los nuevos sprites de imágenes. ¿Hay alguna manera de desactivar esta memoria caché?¿Cómo eliminar el hash de los archivos de imagen de sprite generados por Compass?
Respuesta
Desafortunadamente asset_cache_buster :none
opción no desactiva añadiendo el hash al final del nombre de archivo.
Como escribí hace un tiempo (en francés), Compass no tiene manera de deshabilitar el caché hash buster, pero propongo a solution.
En el archivo de configuración (por ejemplo config.rb
) añadir las siguientes líneas:
# Make a copy of sprites with a name that has no uniqueness of the hash.
on_sprite_saved do |filename|
if File.exists?(filename)
FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}\.png$}, '.png')
end
end
# Replace in stylesheets generated references to sprites
# by their counterparts without the hash uniqueness.
on_stylesheet_saved do |filename|
if File.exists?(filename)
css = File.read filename
File.open(filename, 'w+') do |f|
f << css.gsub(%r{-s[a-z0-9]{10}\.png}, '.png')
end
end
end
Ahora, usos compass clean
para eliminar los archivos generados y se reinicia una compilación con compass compile
.
Obtiene, por ejemplo, un archivo images/icons-scb1e5456d5.png
y un archivo images/icons.png
. En las hojas de estilo, todas las referencias a los sprites ahora apuntan a la versión sin hash.
Asegúrese de que el archivo tenga un hash proporcionado para optimizar los tiempos de compilación por Compass.
Gracias por esto, yo personalmente elegí usar FileUtils.mv en lugar de FileUtils.cp para que el archivo de retención no cuelgue alrededor de – isNaN1247
El uso de esto con grunt-contrib-sass no parece desencadenar el bloque on_stylesheet_saved, dejando las propiedades de fondo css haciendo referencia al archivo con el hash en lugar de uno sin relieve. Sin embargo, usarlo con grunt-contrib-compass lo activó. – yuvilio
@yuvilio este gancho es proporcionado por Compass y no existe en Sass. Thx para el recordatorio! – piouPiouM
Conjunto asset_cache_buster :none
en su config.rb como documented in their configuration reference
esto necesita más votos positivos –
Debe ser la respuesta aceptada. –
Esta solución no evita que Compass coloque hash como postfijo en el nombre del archivo sprite, lo que es un problema en una determinada pregunta. – s3m3n
No he probado con sprites, pero esto funciona con replace-text-with-dimensions
, por ejemplo:
config.rb:
# disable asset cache buster
asset_cache_buster do |http_path, real_path|
nil
end
encontrado en The compass configuration file at caring.com
solución mejor se puede encontrar en otro similar question.
Es mejor porque:
- script cambia nombre antes de sprites generación - no después.
- Debido al punto 1. no es necesario cambiar apenas
.css
archivo generado automáticamente. Se genera con el nombre correcto desde el principio. - La solución aceptada hace
cp
(copia) de sprite generado con hash y se queda en el sistema de archivos/repositorio como duplicado, lo que es bastante malo. Además, aún se ve como cambiado con el repositorio local, por lo que se comprometen dos archivos idénticos. La solución podría hacermv
para cambiar el nombre de archivo hash generado para borrar uno, pero en este caso se generaría sprite cada vez que lo use en el archivo.scss
, por lo que es aún peor.
- 1. Eliminar el signo de interrogación de los archivos generados por Paperclip en Ruby on Rails 3.2.6
- 2. Cómo crear una imagen de sprite
- 3. Eliminar el borde alrededor de la imagen de sprite en Chrome
- 4. Documentos de Sphinx: ¿Eliminar páginas en blanco de los archivos PDF generados?
- 5. Eliminar archivos de imagen del servidor
- 6. ¿Qué archivos generados por RubyMine debo confirmar?
- 7. SCons depende de los archivos generados en tiempo de compilación
- 8. ¿Herramienta fácil de descomponer la imagen de sprite?
- 9. ¿Cómo cambio simplemente la imagen de un sprite en cocos2d?
- 10. Agregando archivos de datos a proyectos generados por cmake
- 11. CSS: Administrar imágenes de Sprite con .Less
- 12. Eclipse - Mostrar archivos de clase generados
- 13. Findbugs excluye archivos generados
- 14. ¿Dónde almacena Eclipse los archivos de servlet generados para Tomcat?
- 15. Múltiples imágenes de fondo (gradiente + sprite)
- 16. Reemplazando imagen en sprite - desarrollo de juego cocos2d de iphone
- 17. ¿Cómo puedo agregar y eliminar archivos de una imagen ISO?
- 18. Incrustar datos JPG correctamente en archivos PDF generados por Inkscape
- 19. Personalizar los accesores generados por datos centrales
- 20. Eliminar todos los archivos creados por el usuario especificado
- 21. imagen de sprite CSS + fondo-repite una parte de ella
- 22. Envío de los comandos generados por xargs al fondo
- 23. Cómo eliminar <hash></hash> de format.xml
- 24. Ignorar archivos generados por el cliente en la vista del área de trabajo de Perforce
- 25. Cómo disminuir el tamaño de los binarios generados?
- 26. Como llegar ReSharper para omitir los archivos generados
- 27. ¿Superponer 2d sprite de arma sobre sprite de personaje?
- 28. ¿Cómo hibernate los ID de los campos generados automáticamente?
- 29. En caso de que los archivos de registro de aplicaciones y los archivos de datos generados por el usuario se almacenen en APPDATA o PROGRAMDATA
- 30. Archivos analizadores y Lexer no generados automáticamente por Eclipse
El hash sprite no es para el almacenamiento en caché del navegador (aunque tiene ese efecto), pero para que Compass pueda identificar el archivo generado. – sam