     */
     public final func invalidateConfiguration()
         {
-        debugLog(.Configuration, ["Configurations need to be recomputed"])
+        if anyConfigSinceLastInvalidation
+            { debugLog(.Configuration, ["Configurations need to be recomputed"]) }
+        anyConfigSinceLastInvalidation = false
+        
         configVersion++
         }
+
+    private var anyConfigSinceLastInvalidation = false
     
     internal func configurationForResource(resource: Resource) -> Configuration
         {
-        debugLog(.Configuration, ["Recomputing configuration for", resource])
+        anyConfigSinceLastInvalidation = true
+        debugLog(.Configuration, ["Computing configuration for", resource])
         let builder = Configuration.Builder()
         for entry in configurationEntries
             where entry.urlMatcher(resource.url!)
             {
-            debugLog(.Configuration, ["Applying", entry, "config to", resource])
+            debugLog(.Configuration, ["Applying", entry, "to", resource])
             entry.configurer(builder)
             }
         return builder.config

            configurer: Configuration.Builder -> Void)
        {
        let entry = ConfigurationEntry(
            description: description ?? "custom",
            urlMatcher: urlMatcher,
            configurer: configurer)
        configurationEntries.append(entry)
        debugLog(.Configuration, ["Added", entry, "config"])
        }
    
    /**
      Signals that all resources need to recompute their configuration next time they need it.

        
        if useDefaultTransformers
            {
            configure(description: "Siesta default response transformers")
                {
                $0.config.responseTransformers.add(JsonTransformer(), contentTypes: ["*/json", "*/*+json"])
                $0.config.responseTransformers.add(TextTransformer(), contentTypes: ["text/*"])
