I don't think that's something to worry about. I like having the responsibility in the controller rather than the model (which always seemed a weird place to define cache keys to me). Seems like for the most part the params are page and zoom, and in most cases the updated_at for the referred resource - is that right?