From: F. G. <fg...@da...> - 2001-03-20 13:33:48
|
Hi all, I'm currently building a web shop with Webware (BTW a great pleasure if one uses Webware). If I browse the few shop pages I already have with the browser's cache activated I always have to press the browser's refresh button (F5 on MSIE). How can I handle this from within Webware? Telling the browser that the content has expired? How do YOU handle this? Thanks in advance and best regards Franz GEIGER |
From: Albert B. <al...@li...> - 2001-03-20 14:01:22
|
On Tue, 20 Mar 2001, F. GEIGER wrote: > Hi all, > > I'm currently building a web shop with Webware (BTW a great pleasure if one > uses Webware). You bet! > > If I browse the few shop pages I already have with the browser's cache > activated I always have to press the browser's refresh button (F5 on MSIE). > How can I handle this from within Webware? Telling the browser that the > content has expired? How do YOU handle this? I've configured my browser not to cache documents - a dirty solution, but it works :-) Cheers, Albert |
From: F. G. <fg...@da...> - 2001-03-20 14:04:54
|
> I've configured my browser not to cache documents - Sure, but what about the thousands ;-) of users who will use my shop? Regards Franz > -----Ursprüngliche Nachricht----- > Von: Albert Brandl [mailto:al...@li...] > Gesendet: Dienstag, 20. März 2001 15:08 > An: F. GEIGER > Cc: Webware-discuss > Betreff: Re: [Webware-discuss] How to switch off or circumvent browser > caching? > > > > > On Tue, 20 Mar 2001, F. GEIGER wrote: > > > Hi all, > > > > I'm currently building a web shop with Webware (BTW a great > pleasure if one > > uses Webware). > > You bet! > > > > > If I browse the few shop pages I already have with the browser's cache > > activated I always have to press the browser's refresh button > (F5 on MSIE). > > How can I handle this from within Webware? Telling the browser that the > > content has expired? How do YOU handle this? > > I've configured my browser not to cache documents - > a dirty solution, but it works :-) > > Cheers, > > Albert > > |
From: Paul J. <pa...@we...> - 2001-03-20 14:15:34
|
At 15:08 20-03-2001 +0100, Albert Brandl wrote: > > If I browse the few shop pages I already have with the browser's cache > > activated I always have to press the browser's refresh button (F5 on MSIE). > > How can I handle this from within Webware? Telling the browser that the > > content has expired? How do YOU handle this? > >I've configured my browser not to cache documents - >a dirty solution, but it works :-) Wouldn't it be better to use Webware to tell the browser not to cache the page? I justed started looking at Webware yesterday and haven't worked with it much yet so I can't give a preboiled solution but I am sure there are better solutions than to depend on non-default behaviour of the browser. You can't tell your visitors to alter their settings before they can use your site. Brgds -- Paul Jongsma WEBtic Internet Consultancy @ http://www.webtic.nl/ |
From: Albert B. <al...@li...> - 2001-03-20 14:26:15
|
Hi! I've just installed the new Release Candidate 2, and a very strange problem occured. Each time I try to instantiate a page, the server triggers an assertion in PythonServletFactory, complaining that my page is no subclass of the class "Servlet". The page is subclassed from SidebarPage - same as e.g. Listbox.py. It seems to me that the problem is caused by the fact that the directory which contains the file is somewhere else, but I'm not quite sure how to track down the bug :-( I'm using linux and apache for development; the servers are connected with apache. I'd be glad about any suggestions! Thanx! Albert |
From: Tom S. <tom...@li...> - 2001-03-20 15:05:56
|
Albert Brandl wrote: > > Hi! > > I've just installed the new Release Candidate 2, > and a very strange problem occured. > > Each time I try to instantiate a page, the server triggers > an assertion in PythonServletFactory, complaining that > my page is no subclass of the class "Servlet". The page is > subclassed from SidebarPage - same as e.g. Listbox.py. > > It seems to me that the problem is caused by the fact that > the directory which contains the file is somewhere else, > but I'm not quite sure how to track down the bug :-( > > I'm using linux and apache for development; the servers are > connected with apache. > > I'd be glad about any suggestions! I just did a clean install to be sure we have the same setup. Everything works fine, also with some examples of my own. Did you use from WebKit.SidebarPage import SidebarPage and has the Servlet the same name as the class defined in it. MyPage.py class MyPage(SidebarPage): -- Tom Schwaller http://www.linux-community.de |
From: Albert B. <al...@li...> - 2001-03-21 07:45:27
|
Hi! Thanks for the advice! > I just did a clean install to be sure we have the same setup. > Everything works fine, also with some examples of my own. > Did you use > > from WebKit.SidebarPage import SidebarPage No, I had Webkit in sys.path and imported SidebarPage (without the package name). After changing the strategy, everything works fine. Is this fact documented somewhere? If not, I think it should be, since the inclusion of Webware/Webkit in sys.path is a rather convenient technique and it's quite possible that some users will have the same problem. Regards, Albert |
From: Chuck E. <ec...@mi...> - 2001-03-21 15:06:56
|
At 08:50 AM 3/21/2001 +0100, Albert Brandl wrote: >No, I had Webkit in sys.path and imported SidebarPage >(without the package name). After changing the strategy, >everything works fine. > > >Is this fact documented somewhere? If not, I think it should >be, since the inclusion of Webware/Webkit in sys.path is a >rather convenient technique and it's quite possible that >some users will have the same problem. Woops. I meant to document this in the release notes, but after reviewing them, I see it's not there. I'll update the 0.5 release notes and make a mention in the 0.5.1 release notes as well. Thanks for pointing that out. -Chuck |
From: Tom S. <tom...@li...> - 2001-03-21 18:10:43
|
Chuck Esterbrook wrote: > > At 08:50 AM 3/21/2001 +0100, Albert Brandl wrote: > >No, I had Webkit in sys.path and imported SidebarPage > >(without the package name). After changing the strategy, > >everything works fine. > > > > > >Is this fact documented somewhere? If not, I think it should > >be, since the inclusion of Webware/Webkit in sys.path is a > >rather convenient technique and it's quite possible that > >some users will have the same problem. I have Webware (but not Webware/WebKit) in my PYTHONPATH, which seems to be ok. from WebKit.SidebarPage import SidebarPage works in every case then.. -- Tom Schwaller http://www.linux-community.de |
From: Chuck E. <ec...@mi...> - 2001-03-21 18:55:30
|
At 07:16 PM 3/21/2001 +0100, Tom Schwaller wrote: >I have Webware (but not Webware/WebKit) in my PYTHONPATH, >which seems to be ok. > >from WebKit.SidebarPage import SidebarPage > >works in every case then.. Right. Note that you don't need Webware in your PYTHONPATH unless you are using Webware components from other programs. When you launch the app server, it inserts the Webware path into sys.path no matter what. This is important, not only for convenience, but also because some of us have multiple Webwares on our hard drives. WebKit has to make sure it doesn't pick up Webware components from other distributions. -Chuck |
From: Irene B. <ib...@as...> - 2001-03-21 20:33:28
|
Chuck, I'm new to Webware, and I too placed the Webware directory in my PYTHONPATH. Your comment about multiple Webwares brings me to a question about the how Webware is intended to be used to develop multiple Web sites physically located on one server. i.e.: http://nicmos.as.arizona.edu/Project1 http://nicmos.as.arizona.edu/Project2 .... And, I want to make those sites look independant from each other and both Projects 1 and 2 should have their own "Application.config" with the "Contexts" section listing the subdirectories under them (Project1/Registration, etc.). How do I do this? Thanks, --irene Chuck Esterbrook wrote: > > At 07:16 PM 3/21/2001 +0100, Tom Schwaller wrote: > >I have Webware (but not Webware/WebKit) in my PYTHONPATH, > >which seems to be ok. > > > >from WebKit.SidebarPage import SidebarPage > > > >works in every case then.. > > Right. Note that you don't need Webware in your PYTHONPATH unless you are > using Webware components from other programs. > > When you launch the app server, it inserts the Webware path into sys.path > no matter what. This is important, not only for convenience, but also > because some of us have multiple Webwares on our hard drives. WebKit has to > make sure it doesn't pick up Webware components from other distributions. > -- ---------------------------------------------------------------- Irene Barg Email: ib...@as... Steward Observatory Phone: 520-621-2602 933 N. Cherry Ave. University of Arizona FAX: 520-621-1891 Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg ---------------------------------------------------------------- |
From: Chuck E. <ec...@mi...> - 2001-03-21 20:50:02
|
Since you already pointed out that you wanted two truly separate apps with their own Application.config files, I would do this: Have a directory for each of your projects that contains a Webware distribution, docs, web site, etc: ProjectX/ Webware/ WebKit/ ... Docs/ Web/ __init__.py SitePage.py Main.py * In ProjectX/Webware/WebKit/Application.config, set your 'default' context to point to ProjectX/Web/. * Choose different ports for each project. Configured in WebKit/AppServer.config. * Set up different adapters for the two projects. Set their ports. (See InstallGuide for more info.) This also separates the concern of Webware version numbers for your projects which could be an issue in the future if you ever wanted to diverge. Like if a Webware 2.0 came out and you had motivation and time to upgrade one project, but not the other. That should cover it, but I could have missed something. If you give it a try, please let us know how it goes one way or the other and we'll go from there. In version 1.0 I plan on making multiple applications easier to configure. I'll be posting a WEP on that at some point. BTW Why was the title of your message "Strange problem with assertion"? -Chuck At 01:33 PM 3/21/2001 -0700, Irene Barg wrote: >Chuck, > >I'm new to Webware, and I too placed the Webware directory >in my PYTHONPATH. Your comment about multiple Webwares >brings me to a question about the how Webware is intended >to be used to develop multiple Web sites physically located >on one server. i.e.: > >http://nicmos.as.arizona.edu/Project1 >http://nicmos.as.arizona.edu/Project2 >.... > >And, I want to make those sites look independant from each other >and both Projects 1 and 2 should have their own "Application.config" >with the "Contexts" section listing the >subdirectories under them (Project1/Registration, etc.). > >How do I do this? > >Thanks, >--irene >Chuck Esterbrook wrote: > > > > At 07:16 PM 3/21/2001 +0100, Tom Schwaller wrote: > > >I have Webware (but not Webware/WebKit) in my PYTHONPATH, > > >which seems to be ok. > > > > > >from WebKit.SidebarPage import SidebarPage > > > > > >works in every case then.. > > > > Right. Note that you don't need Webware in your PYTHONPATH unless you are > > using Webware components from other programs. > > > > When you launch the app server, it inserts the Webware path into sys.path > > no matter what. This is important, not only for convenience, but also > > because some of us have multiple Webwares on our hard drives. WebKit has to > > make sure it doesn't pick up Webware components from other distributions. > > > > >-- >---------------------------------------------------------------- >Irene Barg Email: ib...@as... >Steward Observatory Phone: 520-621-2602 >933 N. Cherry Ave. >University of Arizona FAX: 520-621-1891 >Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg >---------------------------------------------------------------- > >_______________________________________________ >Webware-discuss mailing list >Web...@li... >http://lists.sourceforge.net/lists/listinfo/webware-discuss |
From: Irene B. <ib...@as...> - 2001-03-21 21:41:32
|
Chuck, Because you had mentioned having "multiple Webwares" installed in your response to Tom Schwaller's post "problem with assertion". I didn't mean to confuse. But, back to "multiple Webwares". Since the AsyncThreadedAppServer by default starts up 10 threads, the solution below seems a bit excessive. Maybe I'm confused about the purpose of 'Contexts'. Does 'Contexts' just tell the AppServer where servlets can be found? Let me play with Webware a bit more, maybe I'll find my own solution. BTW, I caught your talk at Python9 and it inspired me to look at Webware as a simpler alternative to Zope:-) Cheers, --irene Chuck Esterbrook wrote: > > Since you already pointed out that you wanted two truly separate apps with > their own Application.config files, I would do this: > > Have a directory for each of your projects that contains a Webware > distribution, docs, web site, etc: > > ProjectX/ > Webware/ > WebKit/ > ... > Docs/ > Web/ > __init__.py > SitePage.py > Main.py > > * In ProjectX/Webware/WebKit/Application.config, set your 'default' context > to point to ProjectX/Web/. > > * Choose different ports for each project. Configured in > WebKit/AppServer.config. > > * Set up different adapters for the two projects. Set their ports. (See > InstallGuide for more info.) > > This also separates the concern of Webware version numbers for your > projects which could be an issue in the future if you ever wanted to > diverge. Like if a Webware 2.0 came out and you had motivation and time to > upgrade one project, but not the other. > > That should cover it, but I could have missed something. If you give it a > try, please let us know how it goes one way or the other and we'll go from > there. > > In version 1.0 I plan on making multiple applications easier to configure. > I'll be posting a WEP on that at some point. > > BTW Why was the title of your message "Strange problem with assertion"? > > -Chuck > > At 01:33 PM 3/21/2001 -0700, Irene Barg wrote: > >Chuck, > > > >I'm new to Webware, and I too placed the Webware directory > >in my PYTHONPATH. Your comment about multiple Webwares > >brings me to a question about the how Webware is intended > >to be used to develop multiple Web sites physically located > >on one server. i.e.: > > > >http://nicmos.as.arizona.edu/Project1 > >http://nicmos.as.arizona.edu/Project2 > >.... > > > >And, I want to make those sites look independant from each other > >and both Projects 1 and 2 should have their own "Application.config" > >with the "Contexts" section listing the > >subdirectories under them (Project1/Registration, etc.). > > > >How do I do this? > > > >Thanks, > >--irene > >Chuck Esterbrook wrote: > > > > > > At 07:16 PM 3/21/2001 +0100, Tom Schwaller wrote: > > > >I have Webware (but not Webware/WebKit) in my PYTHONPATH, > > > >which seems to be ok. > > > > > > > >from WebKit.SidebarPage import SidebarPage > > > > > > > >works in every case then.. > > > > > > Right. Note that you don't need Webware in your PYTHONPATH unless you are > > > using Webware components from other programs. > > > > > > When you launch the app server, it inserts the Webware path into sys.path > > > no matter what. This is important, not only for convenience, but also > > > because some of us have multiple Webwares on our hard drives. WebKit has to > > > make sure it doesn't pick up Webware components from other distributions. > > > > > > > > >-- > >---------------------------------------------------------------- > >Irene Barg Email: ib...@as... > >Steward Observatory Phone: 520-621-2602 > >933 N. Cherry Ave. > >University of Arizona FAX: 520-621-1891 > >Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg > >---------------------------------------------------------------- > > > >_______________________________________________ > >Webware-discuss mailing list > >Web...@li... > >http://lists.sourceforge.net/lists/listinfo/webware-discuss -- ---------------------------------------------------------------- Irene Barg Email: ib...@as... Steward Observatory Phone: 520-621-2602 933 N. Cherry Ave. University of Arizona FAX: 520-621-1891 Tucson, AZ 85721 http://nickel.as.arizona.edu/~barg ---------------------------------------------------------------- |
From: Chuck E. <ec...@mi...> - 2001-03-21 21:47:02
|
At 02:40 PM 3/21/2001 -0700, Irene Barg wrote: >Chuck, > >Because you had mentioned having "multiple Webwares" installed >in your response to Tom Schwaller's post "problem with assertion". I >didn't mean to confuse. But, back to "multiple Webwares". Since the >AsyncThreadedAppServer by default starts up 10 threads, the solution >below seems a bit excessive. Maybe >I'm confused about the purpose of 'Contexts'. Does 'Contexts' >just tell the AppServer where servlets can be found? I assumed you didn't want to use the multiple context approach only because you mentioned the desire for separate Application.config files. If both your projects can share the same Application.config (more than likely they can) and you don't mind your apps sitting in the same process space, then contexts is a good solution. In that case, you simply update Application.config's Contexts setting by choosing a name for each project and stating their directories: 'Project1': '/usr/local/apps/Project1', 'Project2': '/usr/local/apps/Project2', The keys on the left will be expected in the URL in order to get to these applications. The directories can be anywhere that's readable. They don't even have to end with the same name as the context. >Let me play with Webware a bit more, maybe I'll find my own >solution. BTW, I caught your talk at Python9 and it inspired >me to look at Webware as a simpler alternative to Zope:-) Great. Glad you enjoyed it. :-) -Chuck |
From: Tripp L. <tl...@pe...> - 2001-03-21 21:56:14
|
On Wed, 21 Mar 2001, Chuck Esterbrook wrote: > I assumed you didn't want to use the multiple context approach only because > you mentioned the desire for separate Application.config files. If both > your projects can share the same Application.config (more than likely they > can) and you don't mind your apps sitting in the same process space, then > contexts is a good solution. It all pretty much comes down to how much separation you desire. As a sysadmin, I really like each distinct "service" (ie: application, in this case) to have its own sandbox. That way, as Chuck alluded to earlier, I can feel free to upgrade the dependancies of that service without worrying about the impact on other services. It's also really handy when you go to load-balance or migrate services to their own machines, or what have you. -- Joy-Loving * Tripp Lilley * http://stargate.eheart.sg505.net/~tlilley/ ------------------------------------------------------------------------------ "Fiber makes you poop." -- From <http://www.pvponline.com/bts_studio.php3> |
From: Chuck E. <ec...@mi...> - 2001-03-20 15:47:03
|
At 02:33 PM 3/20/2001 +0100, F. GEIGER wrote: >Hi all, > >I'm currently building a web shop with Webware (BTW a great pleasure if one >uses Webware). > >If I browse the few shop pages I already have with the browser's cache >activated I always have to press the browser's refresh button (F5 on MSIE). >How can I handle this from within Webware? Telling the browser that the >content has expired? How do YOU handle this? > >Thanks in advance and best regards >Franz GEIGER You're about one step ahead of me, so I haven't handled this yet, but let me point the way: First of all, the issue of caching is a general web application issue independent of WebKit and the solution for which, I am confident, is an HTTP header issue. (And not Webware, or HTML content which isn't normally read by proxy servers.) With that in mind I did some generic research on the issue and came up with the following. Franz, please let us know what you end up using: [1] The text at this page has links to an intro and a tutorial: http://www.web-caching.com/ [2] "HTML META tags are unreliable for caching purposes, as they are not seen by intermediate proxies and do not have to be followed. The only way to affect caching is to have the HTTP headers set appropriately" http://www.web-caching.com/forums/Forum1/HTML/000016.html [3] I discovered some interesting HTTP headers: Cache-Control: no-cache Expires: 0 Pragma: no-cache at http://www.wired.com/news/topstories/0,1287,1042,00.html With some more reading and experimentation I think you'll have a definitive solution (that you can share with the rest of us). It may be as simple as using one of those headers. -Chuck |
From: F. G. <fg...@da...> - 2001-03-20 19:32:39
|
Plenty of good info, Chuck! Thank you! And many thanks to Jeff Johnson too! I tried 'Cache-Control: no-cache' and 'Pragma: no-cache' but they did not seem to work for my MSIE 5.5. I wanted to avoid the MSIE trick Jeff pointed me to. So I tried 'Expires: 0' and that seemed to do the trick. Now an important question remains: Did I do it in the right piece of Webware code? I want all my pages to have this behaviour so I decided to do it in the Page class of Page.py: def respondToGet(self, transaction): ''' Invokes _respond() to handle the transaction. ''' # self._response.setHeader('Cache-Control', 'no-cache') # DDG\fge: Does not work, at least not for MSIE 5.5 # self._response.setHeader('Pragma', 'no-cache') # DDG\fge: Does not work, at least not for MSIE 5.5 self._response.setHeader('Expires', '0') # DDG\fge: Works, at least not for MSIE 5.5. But is this the rite place to do it? self._respond(transaction) def respondToPost(self, transaction): ''' Invokes _respond() to handle the transaction. ''' # self._response.setHeader('Cache-Control', 'no-cache') # DDG\fge: Does not work, at least not for MSIE 5.5 # self._response.setHeader('Pragma', 'no-cache') # DDG\fge: Does not work, at least not for MSIE 5.5 self._response.setHeader('Expires', '0') # DDG\fge: Works, at least not for MSIE 5.5. But is this the rite place to do it? self._respond(transaction) Anything wrong with this? Probably I should have placed it in a subclass of Page. But I don't think that I should have done it in HTTPResponse.py or in the adapters or servers. Page or its subclasses looks o.k. for me. Right? BTW: Those HTTP-Headers could be set directly in IIS 4.0 as well. But I think that should not be the way how to do it, it should be the app doing it. Best regards Franz GEIGER > -----Ursprüngliche Nachricht----- > Von: Chuck Esterbrook [mailto:ec...@mi...] > Gesendet: Dienstag, 20. März 2001 16:48 > An: fg...@da...; Webware-discuss > Betreff: Re: [Webware-discuss] How to switch off or circumvent browser > caching? > > > At 02:33 PM 3/20/2001 +0100, F. GEIGER wrote: > >Hi all, > > > >I'm currently building a web shop with Webware (BTW a great > pleasure if one > >uses Webware). > > > >If I browse the few shop pages I already have with the browser's cache > >activated I always have to press the browser's refresh button > (F5 on MSIE). > >How can I handle this from within Webware? Telling the browser that the > >content has expired? How do YOU handle this? > > > >Thanks in advance and best regards > >Franz GEIGER > > You're about one step ahead of me, so I haven't handled this yet, but let > me point the way: > > First of all, the issue of caching is a general web application issue > independent of WebKit and the solution for which, I am confident, is an > HTTP header issue. (And not Webware, or HTML content which isn't normally > read by proxy servers.) > > With that in mind I did some generic research on the issue and > came up with > the following. Franz, please let us know what you end up using: > > > [1] The text at this page has links to an intro and a tutorial: > http://www.web-caching.com/ > > > [2] "HTML META tags are unreliable for caching purposes, as they are not > seen by intermediate proxies and do not have to be followed. The only way > to affect caching is to have the HTTP headers set appropriately" > > http://www.web-caching.com/forums/Forum1/HTML/000016.html > > > [3] I discovered some interesting HTTP headers: > Cache-Control: no-cache > Expires: 0 > Pragma: no-cache > at http://www.wired.com/news/topstories/0,1287,1042,00.html > > > With some more reading and experimentation I think you'll have a > definitive > solution (that you can share with the rest of us). It may be as simple as > using one of those headers. > > -Chuck > > |
From: Chuck E. <ec...@mi...> - 2001-03-20 19:46:29
|
At 08:32 PM 3/20/2001 +0100, F. GEIGER wrote: >Anything wrong with this? Probably I should have placed it in a subclass of >Page. But I don't think that I should have done it in HTTPResponse.py or in >the adapters or servers. Page or its subclasses looks o.k. for me. Right? Nothing wrong with this except as you pointed out, it should be in a subclass. Otherwise, you will have to remember to apply this change to WebKit every time you upgrade. For *all* my sites, the first thing I create is a SitePage that inherits Page and is inherited by all my other pages. >BTW: Those HTTP-Headers could be set directly in IIS 4.0 as well. But I >think that should not be the way how to do it, it should be the app doing >it. That's correct. So Expires:0 is the answer. I might throw the others in my application just to be safe. Hmmm, another "recipe" for the non-existant cook book. -Chuck |
From: Paul J. <pa...@we...> - 2001-03-20 19:50:31
|
Hi All, In addition to the research of Chuck I've found the following info: Caching is defined in RFC2068 http://www.w3.org/Protocols/rfc2068/rfc2068 chapters of interest are 13 Caching in HTTP and 14.9 Cache-Control What the RFC doesn't tell you is that not all browsers are correctly interpreting these headers. On the PHP-developer list (archived at http://marc.theaimsgroup.com/?l=php-dev) you can find various messages on this subject. According to some the "Pragma: no-cache" is a IE only thing, the Expires=0 works in Netscape. So using all the three headers Cache-Control: no-cache Expires: 0 Pragma: no-cache at the same time should work for both NS and IE and also all RFC2068 compliant browsers. The Cache-Control header has many options, the RFC documents them all. Hope this is helpfull -- Paul Jongsma WEBtic Internet Consultancy @ http://www.webtic.nl/ |