diff --git a/app/models/repository.rb b/app/models/repository.rb
index d45ec9bd575f500e2359045a92fe18cb6e9f93a0..daf176576adab1db315dbd5571969546cd2e6668 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -33,6 +33,18 @@ def commits_between(target, source)
     commits
   end
 
+  def branch_names
+    Rails.cache.fetch(cache_key(:branch_names)) do
+      raw_repository.branch_names
+    end
+  end
+
+  def tag_names
+    Rails.cache.fetch(cache_key(:tag_names)) do
+      raw_repository.tag_names
+    end
+  end
+
   def method_missing(m, *args, &block)
     raw_repository.send(m, *args, &block)
   end
@@ -47,6 +59,8 @@ def size
 
   def expire_cache
     Rails.cache.delete(cache_key(:size))
+    Rails.cache.delete(cache_key(:branch_names))
+    Rails.cache.delete(cache_key(:tag_names))
   end
 
   def cache_key(type)