0

Ich versuche herauszufinden, wie die sehr ablenkenden Cache read: http://localhost:3000/assets/... Anweisungen in meinem Rails development.log, die wirklich verlangsamen mich mit all den Scrolling sie lass mich das machen (ich bin auf Rails 3.2).Silencing "Cache lesen" Anweisungen in Rails development.log für alle meine Vermögenswerte

In meiner Entwicklung Protokoll, nachdem die SQL-Anweisungen, und liest/für Cache schreibt Fragmente (was immer noch nützlich ist, und ich möchte halten), gibt es eine lange Liste von Cache lesen Aussagen für alle js, css und Bilder, die auf der angeforderten Seite verwendet werden. Nur um eine Handvoll zu zeigen:

Cache read: http://localhost:3000/assets/jquery.atwho.css?body=1 
Cache read: http://localhost:3000/assets/jquery.selectric.css?body=1 
Cache read: http://localhost:3000/assets/font-awesome.css?body=1 
Cache read: http://localhost:3000/assets/480.css?body=1 
Cache read: http://localhost:3000/assets/768.css?body=1 

Ich verwende die quiet_assets gem wie in another SO post vorgeschlagen wurde, aber das funktioniert nicht auf diesen Aussagen „Cache lesen“.

Gibt es eine einfache Einstellung Ich vermisse in config/environments/development.rb, um diese nicht in das Protokoll auszugeben? Vielen Dank allen

EDIT: Hier sind meine development.rb Einstellungen (I enthalten alles, was relevant sein könnten):

config.consider_all_requests_local = true 

# cache store 
config.action_controller.perform_caching = true 
config.cache_store = :dalli_store, nil, { 
    value_max_bytes: 10485760, 
    compress: true 
} 
config.static_cache_control = "public, max-age=2592000" 

config.assets.compress = false 
config.assets.debug = true 
config.assets.logger = false 
+0

Können Sie Ihre 'development.rb' Konfiguration anzeigen? Ich sehe solche Zeilen in meinen Protokollen nicht, also gibt es wahrscheinlich eine Einstellung, die es für Sie auslöst. – BoraMa

+0

@BoraMa Guten Ruf, ich habe meine Frage aktualisiert, um 'development.rb' config zu zeigen – DelPiero

Antwort

1

Der "Cache lesen" Linien kommen aus dem Dalli Cache Backend und Sie werden für alle Zugriffe auf den Dalli-Cache-Speicher angezeigt. Wenn Sie diese Debug-Zeile zu unterdrücken wollen nur die Zugriffe mit „Vermögen“ Schlüssel zu tun, aber immer noch andere angemeldet, werden Sie auf Affen-Patch Dalli haben in einer Rails-Initialisierer:

# config/initializers/dalli_assets_silencer.rb: 
module ActiveSupport 
    module Cache 
    class DalliStore 

     private 

     alias_method :orig_log, :log 

     # silences "Cache read ..." etc debug lines for assets, but allows all others 
     def log(operation, key, options=nil) 
     return if key.to_s.include?("/assets/") 
     orig_log(operation, key, options) 
     end 

    end 
    end 
end 

Die initializer definiert die log method von Dalli speichern, so dass es tatsächlich den Cache-Zugriff nur dann protokolliert, wenn der Schlüssel nicht mit der Zeichenfolge "/assets/" übereinstimmt. Wenn dies der Fall ist, tut der neu definierte log nichts.

+0

Brilliant, vielen Dank! Das löschte alle 'Cache read'-Anweisungen mit '"/assets/"' in ihnen. Es gibt immer noch eine lange Log-Ausgabe von etwas, das wie Digests einer Art aussieht: 'Cache gelesen: 4930ce0c6ab3bcab1daa8f0d67791c6834742c7b' (aber Dutzende davon). Ich inspizierte den Protokollaufruf, und es sieht so aus, als ob die "Operation" ist: "Lesen", und der "Schlüssel" ist der Auszug, z. '4930ce0c6ab3bcab1daa8f0d67791c6834742c7b'. Ich nehme nicht an, dass es eine Möglichkeit gibt, diese herauszufiltern, während die nicht-Asset-Cache-Lesungen intakt bleiben? – DelPiero

+1

Sie können alles, was ignoriert werden soll, mit dem gleichen Muster oder in diesem Fall mit regexp in der Methode 'log' overridden' abgleichen. So etwas zum Beispiel: 'return if key.to_s.include? ("/Assets/") || key.to_s = ~/[0-9a-f] {30,}/'was Asset-Schlüsseln und Digest-Schlüsseln mit mehr als 30 Zeichen entsprechen sollte. – BoraMa