I am banging my head against the wall here. I have a gd-generated image that keeps being changed via ajax on my page. Since the image is generated based on querystring parameters (which don''t change) but is based on a model (that is constantly changing), the browser caches the image and you have to do a page refresh to update the image. I have hacked around it by appending a random number to the querystring, but that should make every image be cached to the browser, which I don''t want to do to my clients if I don''t have to (there will be LOTS of images). What I have found online is that I need to change the headers that I am sending out. Here''s what I have and it doesn''t work. I don''t know if the headers aren''t being sent or if I am sending the wrong headers or a sickly combination of the two... headers[''Cache-Control''] = ''no-cache, must-revalidate, post-check=0, pre-check=0'' headers[''Pragma''] = ''public'' headers[''Expires''] = "0" send_data image.jpeg, :type => "image/jpeg", :disposition => "inline" #this line works Any help would be greatly appreciated. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 10 Jul 2008, at 09:31, Joe K wrote:> I am banging my head against the wall here. I have a gd-generated > image that keeps being changed via ajax on my page. Since the image > is generated based on querystring parameters (which don''t change) > but is based on a model (that is constantly changing), the browser > caches the image and you have to do a page refresh to update the > image. I have hacked around it by appending a random number to the > querystring, but that should make every image be cached to the > browser, which I don''t want to do to my clients if I don''t have to > (there will be LOTS of images). What I have found online is that I > need to change the headers that I am sending out. Here''s what I have > and it doesn''t work. I don''t know if the headers aren''t being sent > or if I am sending the wrong headers or a sickly combination of the > two... > > headers[''Cache-Control''] = ''no-cache, must-revalidate, post-check=0, > pre-check=0'' > headers[''Pragma''] = ''public'' > headers[''Expires''] = "0" > send_data image.jpeg, :type => "image/jpeg", :disposition => > "inline" #this line works > > Any help would be greatly appreciated.Maybe someone might come up with a header-based solution, but you could also add an extra parameter with a timestamp to the url (don''t know if the :with parameter of the Rails Javascript helper will do here, I tend to write up my own Javascript instead of relying on the Rails helpers). Rails itself uses a similar solution for the css and javascript files that are loaded (it adds a timestamp). This would mean your browser would send out requests like: http://www.mydomain.com/image?time=20080710141812 http://www.mydomain.com/image?time=20080710141825 http://www.mydomain.com/image?time=20080710141845 http://www.mydomain.com/image?time=20080710141910 ... Best regards Peter De Berdt --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Peter, That''s almost exactly what I am doing right now, except I use rand(Time.now.to_i) rather than a timestamp (in the off chance of more than 1 req/sec). I just don''t like the idea of spamming my customers'' cache with images if I don''t have to. Thank you for your help. On Thu, Jul 10, 2008 at 8:19 AM, Peter De Berdt <peter.de.berdt-LPO8gxj9N8aZIoH1IeqzKA@public.gmane.org> wrote:> > On 10 Jul 2008, at 09:31, Joe K wrote: > > I am banging my head against the wall here. I have a gd-generated image > that keeps being changed via ajax on my page. Since the image is generated > based on querystring parameters (which don''t change) but is based on a model > (that is constantly changing), the browser caches the image and you have to > do a page refresh to update the image. I have hacked around it by appending > a random number to the querystring, but that should make every image be > cached to the browser, which I don''t want to do to my clients if I don''t > have to (there will be LOTS of images). What I have found online is that I > need to change the headers that I am sending out. Here''s what I have and it > doesn''t work. I don''t know if the headers aren''t being sent or if I am > sending the wrong headers or a sickly combination of the two... > > headers[''Cache-Control''] = ''no-cache, must-revalidate, post-check=0, > pre-check=0'' > headers[''Pragma''] = ''public'' > headers[''Expires''] = "0" > send_data image.jpeg, :type => "image/jpeg", :disposition => "inline" > #this line works > > Any help would be greatly appreciated. > > > Maybe someone might come up with a header-based solution, but you could > also add an extra parameter with a timestamp to the url (don''t know if the > :with parameter of the Rails Javascript helper will do here, I tend to write > up my own Javascript instead of relying on the Rails helpers). Rails itself > uses a similar solution for the css and javascript files that are loaded (it > adds a timestamp). This would mean your browser would send out requests > like: > > http://www.mydomain.com/image?time=20080710141812 > http://www.mydomain.com/image?time=20080710141825 > http://www.mydomain.com/image?time=20080710141845 > http://www.mydomain.com/image?time=20080710141910 > ... > > > Best regards > > > Peter De Berdt > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---