> -----Original Message----- > From: Simon Hook [mailto:simon.j.hook@xxxxxxxxxxxx] > Sent: Donnerstag, 10. März 2005 07:23 > To: users@xxxxxxxxxxxxxxxx > Subject: [users@httpd] When an image is replaced in the > htdocs directory > through a cgi script and incorporated into a new html page > the new image > does not get incorporated. > > > PROBLEM: When an image is replaced in the htdocs directory > through a cgi > script and incorporated into a new html page the new image > does not get > incorporated. > > Hi All, > > I am trying to write a web app where a variable, passed with > a form, is > used to generate a plot, which is saved and then displayed > as a static > image in an html page. I am using the webform from pythonweb and > generating the plot with matplotlib. I am using Apache 2.053 under > Windows XP. I am keeping it real simple by simply passing an integer. > The whole process works, HOWEVER, when I back page and submit a new > integer value which generates a new plot and new static > image, the new > image does not get displayed, instead the last version of the static > image (plot) is displayed (presumably from the cache). Rather, "...presumably from *a* cache..." There are several points where data are cached in a typical browser-server configuration: - in the server: Are you using mod_cache? If so, try CacheDisable the path to the cgi, or just switch off (don't Load it). - in the network: Are the browser and server connected via a network? If there are proxies in the route, they will certainly cache things.. Can you connect directly? - in the browser: disable caching (thought his will make pages slow to load - it'll have to reload images every time To check if it's really the server, use a browser with caching turned off and connected directly to the server.. Rgds, Owen Boyle Disclaimer: Any disclaimer attached to this message may be ignored. > If I > reload the > page with the browser the updated image gets displayed otherwise the > previous plot gets displayed with 2 or 3 re-submits and then > eventually > an updated one is displayed. It seems like Apache does not > recognize a > changed image and still uses the first plot I created for 2 > or 3 submits > or the submit does not force Apache to look for a changed file. > > I am new to Apache, Pythonweb and MatplotLib although I have done > similar stuff with ASP and IIS and some Python work. I have waded > through the Apache and Pythonweb documentation and got > nowhere. I have > tried using the MOD_EXPIRES directive with Apache but this has no > effect. I think this is because a new image (PNG) has been generated > rather than an old one has expired. I cannot see any way with > pythonweb > forms to load a static html page (i.e. with cgi). I think if I had a > static html page I could write out maybe I could expire that > which would > force Apache to load the new image file. > > I have tried > > <META HTTP-EQUIV=Refresh CONTENT=1> > > which refreshes the page every second - this works but who > would want it! > > I have tried > > <META HTTP-EQUIV=expires CONTENT=0> > > but this does not work. > > I have attached the code below, its a rework of one of the > examples in > pythonweb. Just copy this to the cgi-bin directory and it > should work, > provided matplotlib is installed. Matplotlib is available from: > > http://matplotlib.sourceforge.net/ > > Pythonweb is available from: > > http://www.pythonweb.org > > Despite hours of trying I cannot get this to work, which > would seem like > a necessity for Pythonweb and Apache. Any help would be much > appreciated. > > Thanks, > > Simon > > ---cut here > > #!d:/apps/Python23/python > > "The form that will not update" > > import sys, re, os > sys.path.append('../') > sys.path.append('../../') > > import web.error; web.error.handle(handler='browser', output='debug', > format='html') > import web, web.form, web.form.field.basic, web.util > import web.form.field.typed > from pylab import * > > class ExampleForm(web.form.Form): > > def setup(self): > self.addField(web.form.field.typed.Integer('myval', > default=6, > required=True)) > > # The preffered way of adding submit buttons is as actions so > Submit buttons are normally not used. > self.addAction('Validate This Form') > > # Print the HTTP Header > print web.header('text/html') > > # Create a form > exampleForm = ExampleForm('form', os.environ['SCRIPT_NAME'], 'get') > > if len(web.cgi) > 0: # Form submitted > # Populate form with the values from get. > > # Populate the form > exampleForm.populate(web.cgi) > > # Process the form (Validate) > if exampleForm.valid(): > > # Grab the desired value, from the form > myval=exampleForm['myval'].value > > # Create the plot, saved as a png in the htdocs directory > myarray=[myval,4,9,16] > print myarray > plot([1,2,3,4], myarray, 'ro') > axis([0, 6, 0, 20]) > savefig('../htdocs/plot.png') > > print "<hmtl><body><div align=center><img src=/plot.png > alt=theplot></div></body></html>" > > else: > print > "<html><head><title>noupdate</title></head><body>\n<h1>Input > integer 0-10</h1>%s\n<hr></body></html>"%(exampleForm.html()) > > ---end cut > > --------------------------------------------------------------------- > The official User-To-User support forum of the Apache HTTP > Server Project. > See <URL:http://httpd.apache.org/userslist.html> for more info. > To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx > " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx > For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx > > Diese E-mail ist eine private und persönliche Kommunikation. Sie hat keinen Bezug zur Börsen- bzw. Geschäftstätigkeit der SWX Gruppe. This e-mail is of a private and personal nature. It is not related to the exchange or business activities of the SWX Group. Le présent e-mail est un message privé et personnel, sans rapport avec l'activité boursière du Groupe SWX. This message is for the named person's use only. It may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please notify the sender urgently and then immediately delete the message and any copies of it from your system. Please also immediately destroy any hardcopies of the message. You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. The sender's company reserves the right to monitor all e-mail communications through their networks. Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorised to state them to be the views of the sender's company. --------------------------------------------------------------------- The official User-To-User support forum of the Apache HTTP Server Project. See <URL:http://httpd.apache.org/userslist.html> for more info. To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx " from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx