diff --git a/CHANGELOG b/CHANGELOG
index 3fa5143d43ffbc253694153cb8baf6666f4eec6c..e62697410a8c510886f9e71d329885500dfd4970 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -9,6 +9,7 @@ v 6.4.0
   - Allow removal of avatar (Drew Blessing)
   - Project web hooks now support issues and merge request events
   - Visiting project page while not logged in will redirect to sign-in instead of 404 (Jason Hollingsworth)
+  - Expire event cache on avatar creation/removal (Drew Blessing)
 
 v 6.3.0
   - API for adding gitlab-ci service
diff --git a/app/controllers/profiles/avatars_controller.rb b/app/controllers/profiles/avatars_controller.rb
index e90eaafd4404f4e9fb2189bf73a4cdaa3111d811..57f3bbf0627ad4d79fe4e712b2f8504ec5c3cf46 100644
--- a/app/controllers/profiles/avatars_controller.rb
+++ b/app/controllers/profiles/avatars_controller.rb
@@ -6,6 +6,8 @@ class Profiles::AvatarsController < ApplicationController
     @user.remove_avatar!
 
     @user.save
+    @user.reset_events_cache
+
     redirect_to profile_path
   end
 end
diff --git a/app/models/user.rb b/app/models/user.rb
index f1f68d5f4249744705876c4334c9e0e747a31584..25a04089d3316c3da26eb55b9e194d7023eab66e 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -404,4 +404,18 @@ class User < ActiveRecord::Base
     project.namespace != namespace &&
       project.project_member(self)
   end
+
+  # Reset project events cache related to this user
+  #
+  # Since we do cache @event we need to reset cache in special cases:
+  # * when the user changes their avatar
+  # Events cache stored like  events/23-20130109142513.
+  # The cache key includes updated_at timestamp.
+  # Thus it will automatically generate a new fragment
+  # when the event is updated because the key changes.
+  def reset_events_cache
+    Event.where(author_id: self.id).
+      order('id DESC').limit(1000).
+      update_all(updated_at: Time.now)
+  end
 end
diff --git a/app/uploaders/attachment_uploader.rb b/app/uploaders/attachment_uploader.rb
index 98794c9470b3d9a1f3b6288785d646fd6ceef571..b122b6c8658c62cc35507fd44cef8c1c23dd582d 100644
--- a/app/uploaders/attachment_uploader.rb
+++ b/app/uploaders/attachment_uploader.rb
@@ -3,6 +3,8 @@
 class AttachmentUploader < CarrierWave::Uploader::Base
   storage :file
 
+  after :store, :reset_events_cache
+
   def store_dir
     "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
   end
@@ -27,4 +29,8 @@ class AttachmentUploader < CarrierWave::Uploader::Base
   def file_storage?
     self.class.storage == CarrierWave::Storage::File
   end
+
+  def reset_events_cache(file)
+    model.reset_events_cache if model.is_a?(User)
+  end
 end