<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Image Caching in PL/SQL Applications</title>
	<atom:link href="http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/feed/" rel="self" type="application/rss+xml" />
	<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/</link>
	<description>Technology with a focus on Oracle, Application Express and Linux</description>
	<pubDate>Fri, 16 May 2008 23:11:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: Tyler Muth</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1327</link>
		<dc:creator>Tyler Muth</dc:creator>
		<pubDate>Mon, 28 Apr 2008 12:40:46 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1327</guid>
		<description>Renu,

I was doing this research for an APEX application.  You could call the "image_test" procedure from an APEX report, or when someone clicks on a link, or using htp.p in a PL/SQL region.  On a related note, APEX 3.1 actually implements this technique, so the images you upload through the APEX UI use this technique to handle downloads.   One more reason to upgrade to 3.1.</description>
		<content:encoded><![CDATA[<p>Renu,</p>
<p>I was doing this research for an APEX application.  You could call the &#8220;image_test&#8221; procedure from an APEX report, or when someone clicks on a link, or using htp.p in a PL/SQL region.  On a related note, APEX 3.1 actually implements this technique, so the images you upload through the APEX UI use this technique to handle downloads.   One more reason to upgrade to 3.1.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: renu</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1326</link>
		<dc:creator>renu</dc:creator>
		<pubDate>Mon, 28 Apr 2008 09:44:27 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1326</guid>
		<description>Could any one reply how to implement into oracle apex</description>
		<content:encoded><![CDATA[<p>Could any one reply how to implement into oracle apex</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loga</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1325</link>
		<dc:creator>Loga</dc:creator>
		<pubDate>Mon, 28 Apr 2008 09:38:45 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1325</guid>
		<description>Excellent valuable solution for my searched query :)
Loga.</description>
		<content:encoded><![CDATA[<p>Excellent valuable solution for my searched query <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Loga.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Greg Jarmiolowski</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1297</link>
		<dc:creator>Greg Jarmiolowski</dc:creator>
		<pubDate>Fri, 14 Mar 2008 16:15:44 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1297</guid>
		<description>This addresses per user/browser cache. What about caching on the webserver file system with owa_cache? Is that already in the APEX plumbing?</description>
		<content:encoded><![CDATA[<p>This addresses per user/browser cache. What about caching on the webserver file system with owa_cache? Is that already in the APEX plumbing?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyler Muth</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1243</link>
		<dc:creator>Tyler Muth</dc:creator>
		<pubDate>Sat, 23 Feb 2008 15:13:49 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1243</guid>
		<description>Phil, I would need more details to comment, but this situation would apply to Oracle Application Server when you are serving images out of the database using mod_plsql with your own custom code.</description>
		<content:encoded><![CDATA[<p>Phil, I would need more details to comment, but this situation would apply to Oracle Application Server when you are serving images out of the database using mod_plsql with your own custom code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Winfield</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1241</link>
		<dc:creator>Phil Winfield</dc:creator>
		<pubDate>Sat, 23 Feb 2008 12:41:54 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1241</guid>
		<description>Tyler, I spent a bit of time looking into improving performance for a client but it seems that if Oracle Application server is serving up the pages, images and other page components can be cached already. Is it correct to say this is specific to the HTTP server that ships with 10g or does OAS not really do this?

Phil</description>
		<content:encoded><![CDATA[<p>Tyler, I spent a bit of time looking into improving performance for a client but it seems that if Oracle Application server is serving up the pages, images and other page components can be cached already. Is it correct to say this is specific to the HTTP server that ships with 10g or does OAS not really do this?</p>
<p>Phil</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyler Muth</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1229</link>
		<dc:creator>Tyler Muth</dc:creator>
		<pubDate>Fri, 22 Feb 2008 04:40:14 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1229</guid>
		<description>Jan,

Yes, this will still hit the database.  Do you have a suggestion for how it could be solved in the middle tier?

Tyler</description>
		<content:encoded><![CDATA[<p>Jan,</p>
<p>Yes, this will still hit the database.  Do you have a suggestion for how it could be solved in the middle tier?</p>
<p>Tyler</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jan</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1227</link>
		<dc:creator>Jan</dc:creator>
		<pubDate>Thu, 21 Feb 2008 01:07:19 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1227</guid>
		<description>This still hits the database right?
Why not solve this on the middle tier?</description>
		<content:encoded><![CDATA[<p>This still hits the database right?<br />
Why not solve this on the middle tier?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1196</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Wed, 13 Feb 2008 14:50:20 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1196</guid>
		<description>Does anyone know how this can be applied to Oracle Portal?

When images items are used on a secure Portal page they have no ETag and are therefore resent every time.

(Portal version 10.1.4)

Thanks</description>
		<content:encoded><![CDATA[<p>Does anyone know how this can be applied to Oracle Portal?</p>
<p>When images items are used on a secure Portal page they have no ETag and are therefore resent every time.</p>
<p>(Portal version 10.1.4)</p>
<p>Thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tyler Muth</title>
		<link>http://tylermuth.wordpress.com/2008/02/04/image-caching-in-plsql-applications/#comment-1192</link>
		<dc:creator>Tyler Muth</dc:creator>
		<pubDate>Fri, 08 Feb 2008 20:00:50 +0000</pubDate>
		<guid isPermaLink="false">http://tylermuth.wordpress.com/?p=47#comment-1192</guid>
		<description>John,

Two problems with "Expires".  First, what value do you choose?  For totally static images, you could choose something like sysdate+1 (or more), but the nature of images / files that are stored in the database is that they tend to change.  Thus, one user could update a file, but other users would not see the change to the file for a day.  You could possibly get around this by renaming the file anytime it changes, but I'm not totally convinced this is a bullet-proof solution.

Second, even if you set "Expires", you are relying on the end-users browser settings. Even using the default settings in IE7, Firefox 2 and 3, and Opera, I observed mixed results.  Take a look at &lt;a href="http://yuiblog.com/blog/2007/01/04/performance-research-part-2/" rel="nofollow"&gt; this link&lt;/a&gt; from yahoo where they state that "40-60% of Yahoo!’s users have an empty cache experience and ~20% of all page views are done with an empty cache".

My conclusion is this.  Using the ETag technique will guarantee that all requests after the first one will only return an HTTP header, not the whole file.  Adding the "Expires" header is a nice addition for files that you know will not change.  It will keep the additional HTTP requests from happening at all... most of the time.

Tyler</description>
		<content:encoded><![CDATA[<p>John,</p>
<p>Two problems with &#8220;Expires&#8221;.  First, what value do you choose?  For totally static images, you could choose something like sysdate+1 (or more), but the nature of images / files that are stored in the database is that they tend to change.  Thus, one user could update a file, but other users would not see the change to the file for a day.  You could possibly get around this by renaming the file anytime it changes, but I&#8217;m not totally convinced this is a bullet-proof solution.</p>
<p>Second, even if you set &#8220;Expires&#8221;, you are relying on the end-users browser settings. Even using the default settings in IE7, Firefox 2 and 3, and Opera, I observed mixed results.  Take a look at <a href="http://yuiblog.com/blog/2007/01/04/performance-research-part-2/" rel="nofollow"> this link</a> from yahoo where they state that &#8220;40-60% of Yahoo!’s users have an empty cache experience and ~20% of all page views are done with an empty cache&#8221;.</p>
<p>My conclusion is this.  Using the ETag technique will guarantee that all requests after the first one will only return an HTTP header, not the whole file.  Adding the &#8220;Expires&#8221; header is a nice addition for files that you know will not change.  It will keep the additional HTTP requests from happening at all&#8230; most of the time.</p>
<p>Tyler</p>
]]></content:encoded>
	</item>
</channel>
</rss>
