From 858e51c8abc7699684e322ef6b2b3bfba875bbd6 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 9 Sep 2013 15:35:13 -0400 Subject: [PATCH] Use `no-cache` in development mode for assets. Using `must-revalidate`, which is Rails' default, seems to have Chrome sometimes not request assets in development mode even though it's supposed to revalidate every time. --- lib/middleware/turbo_dev.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/middleware/turbo_dev.rb b/lib/middleware/turbo_dev.rb index ceb463aa7ab..81f4070bee7 100644 --- a/lib/middleware/turbo_dev.rb +++ b/lib/middleware/turbo_dev.rb @@ -6,8 +6,11 @@ module Middleware @app = app end def call(env) + + is_asset = (env['REQUEST_PATH'] =~ /^\/assets\//) + # hack to bypass all middleware if serving assets, a lot faster 4.5 seconds -> 1.5 seconds - if (etag = env['HTTP_IF_NONE_MATCH']) && env['REQUEST_PATH'] =~ /^\/assets\// + if (etag = env['HTTP_IF_NONE_MATCH']) && is_asset name = $' etag = etag.gsub "\"", "" asset = Rails.application.assets.find_asset(name) @@ -16,7 +19,9 @@ module Middleware end end - @app.call(env) + status, headers, response = @app.call(env) + headers['Cache-Control'] = 'no-cache' if is_asset + [status, headers, response] end end end