RE: [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.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----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



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux