• Yorick Peterse's avatar
    Refactor TrendingProjectsFinder to support caching · f57359a08310
    Yorick Peterse authored
    == Public Projects
    
    This finder class now _only_ returns public projects. Previously this
    finder would also return private and internal projects. Including these
    projects makes caching data much harder and less efficient. Meanwhile
    including this data isn't very useful as very few users would be
    interested in seeing projects they have access to as trending. That is,
    the feature is more useful when you want to see what _other_ popular
    projects there are.
    
    == Caching
    
    The data returned by TrendingProjectsFinder is now cached for a day
    based on the number of months the data should be restricted to. The
    cache is not flushed explicitly, instead it's rebuilt whenever it
    expires.
    
    == Timings
    
    To measure the impact I changed the finder code to use the last 24
    months instead of the last month. I then executed and measured 10
    requests to the explore page. On the current "master" branch (commit
    1fb46e29f7cc) this would take an average of
    2.43 seconds. Using the changes of this commit this was reduced to
    around 1.7 seconds.
    
    Fixes gitlab-org/gitlab-ce#22164
    f57359a08310
trending_projects_finder.rb 491 Bytes