How to cache this kind of action?


#1

I have an action. It renders files specified by URL. If the file is a
source code, the action will do something on it, like highlighting.
If the file is a plaintext or an image, the action just sends it as
is.

This code works until I turn on cache on this action. With cache
enabled, the second time to access a URL will result in a prompt
dialog asking if you want to download it.

I guess it is related to the mimetype. But don’t know how to solve it:(


#2

The Rails action_cache does not keep the headers returned from the
first request that causes the data to be cached. On subsequent
requests, if you set the correct response.headers for the file after
the action cache before filter, then you will get the default headers
(text/html content type)

My action_cache filter will keep the headers returned, and will return
the same ones on subsequent requests.

Just install the plugin and restart your app – for this fix, no other
configuration is needed.


#3

So where can I get your plugin? Thanks in advance.


#4

I found it.
http://www.agilewebdevelopment.com/plugins/action_cache


#5

Ben’s agile development site is always the best place to find plugins.


#6

Are you setting the correct mime type in your action that returns the
file? Can you post the code for that action?


#7

Now I am using caches_action instead of caches_page and it works. Is
this a “Work as design”?
BTW: I think your plugin is useful. Can you make it default in rails?
I am not clear about rails development model. Just wondering.

Anyway, thanks a lot.


#8

Opps, I’ve installed your plugin but still have the problem. It’s my
first time to use rails plugin. I am not sure if I’ve done things
right.

I installed the plugin by “./script/plugin install http://craz8.com/
svn/trunk/plugins/action_cache”. But how can I know this plugin is
working?