Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement http_cache_forever to ActionController #18394

Merged
merged 1 commit into from
Feb 15, 2015

Conversation

arthurnn
Copy link
Member

@arthurnn arthurnn commented Jan 8, 2015

Add http_cache_forever to ActionController, so we can cache results
forever.
Things like static pages are a good candidate for this type of caching.

This cache only controls caching headers, so it is up to the browser to
cache those requests.

First stab at #18192

@dhh @rafaelfranca @sgrif thoughts?

@dhh
Copy link
Member

dhh commented Jan 8, 2015

Lovely! Need a CHANGELOG entry as well.

@arthurnn arthurnn force-pushed the http_cache_forever branch 2 times, most recently from 33896c8 to f8ad5c8 Compare January 10, 2015 18:42
@arthurnn
Copy link
Member Author

@dhh Changelog ✔️

@@ -46,6 +46,20 @@ def cache_configured?
end
end

# Cache or yield the block. The cache is suppose to never expire.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to communicate why you'd reach for this method and what it does. You have an HTTP response that never changes, so you want browsers and proxies to cache it indefinitely. On the first hit, we serve the response with long-lived cache freshness response headers. Then subsequent requests will always revalidate as fresh.

This method belongs elsewhere, too. This module is concerned with caching within the app (fragments, template dependencies, etc) not HTTP cache freshness.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@arthurnn
Copy link
Member Author

@jeremy I addressed most of your concerns, just leaving the where this should be still for decision. Let me know your thoughts. thanks

expires_in 100.years, public: public

yield if stale?(etag: "#{version}-#{request.fullpath}",
last_modified: Time.parse('2011-01-01').utc,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What was the significance of this date (curious)? Thanks.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is just a date on the past. But now I wonder if the last_modifed is necessary at all. I guess we could use only the etag, as that one has the version. Not 100% sure tho, as this is the opposite what @jeremy said in the comment above.. lets wait for him on this.

@andyatkinson
Copy link
Member

@arthurnn I worked on a PR but then I realized yours was much further along. I fetched yours, ran the tests, and read through them. Looks good! 👍

@dhh
Copy link
Member

dhh commented Feb 8, 2015

@jeremy Can you give this a final look over? Seems like we're just about ready for a merge.

@arthurnn
Copy link
Member Author

arthurnn commented Feb 9, 2015

@jeremy let me know your thoughts, I can fix/rebase/merge this when you fell this is ready!

@jeremy
Copy link
Member

jeremy commented Feb 9, 2015

🚢

@kaspth
Copy link
Contributor

kaspth commented Feb 14, 2015

@arthurnn just a reminder that you're also working on this and need to rebase 😄

@arthurnn
Copy link
Member Author

merging this today, after breakfast =)

Add http_cache_forever to ActionController, so we can cache results
forever.
Things like static pages are a good candidate for this type of caching.

This cache only controls caching headers, so it is up to the browser to
cache those requests.
arthurnn added a commit that referenced this pull request Feb 15, 2015
Implement http_cache_forever to ActionController
@arthurnn arthurnn merged commit e825042 into rails:master Feb 15, 2015
@arthurnn arthurnn deleted the http_cache_forever branch February 15, 2015 17:17
@kaspth
Copy link
Contributor

kaspth commented Feb 15, 2015

forever ❤️

@arthurnn
Copy link
Member Author

🎉 😸

@dhh
Copy link
Member

dhh commented Feb 15, 2015

Boom! 🤘

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants