[Laszlo-dev] setSource and caching?
Michael Kroll
m.kroll at mac.com
Wed Jan 30 06:35:52 PST 2008
I was playing around wih the headers, but it seems that all those have
no success in order not to store
the images in the browsers cache. I need to look more into the details
and let you know how if it works.
Thanks,
Michael.
Am 30.01.2008 um 15:32 schrieb P T Withington:
> Thanks go to André for pointing out the unload call!
>
> On Jan 30, 2008, at 9:01, Michael Kroll <m.kroll at mac.com> wrote:
>
>> Hi,
>>
>> since I have full control over the servlet providing the images I
>> was now able to reduce the amount of memory to a minimum. First I
>> added an unload() call to my view, before I start requesting the
>> new image and I added additional HTTP Headers hoping that the
>> browser is not storing the images.
>>
>> Finally the unload call did the trick. :-)
>>
>> Thank's,
>> Michael.
>>
>> Am 30.01.2008 um 14:28 schrieb P T Withington:
>>
>>> To the best of my knowledge, we (from the client side) have no
>>> control over the browser's cache. Internally we do something very
>>> like you do, attaching a random query string to 'break' the
>>> browser's cache (that is, to make the browser fetch a new copy).
>>>
>>> Your image _server_ has to be the one to tell IE not to cache your
>>> images using the cache-control headers:
>>>
>>> http://support.microsoft.com/kb/234067
>>>
>>> On 2008-01-30, at 07:32 EST, Michael Kroll wrote:
>>>
>>>> Hi all,
>>>> today I was trying to fix a problem with my image distribution
>>>> app while it consumes lots of memory.
>>>> In my case I need to display lots (500+) images per patient study
>>>> which are loaded from a webserver.
>>>>
>>>> I'm still in the dhtml boat and I'm currently testing my app
>>>> agains build 7833 of OL4.1.x.
>>>>
>>>> After some search in the OL Forum and in the book OL in Action I
>>>> tried to use setSource() with its additional cache
>>>> parameter without luck. My app does is using a timestamp inside
>>>> the image url to ensure that the image is not loaded from the
>>>> browsers cache. The images are not loaded from the browsers
>>>> cache, but they are stored there :-(
>>>>
>>>> I tried to specify setSource("myUrl", "none") without luck. The
>>>> memory usage in WindowsXP taskmanager is still growing. Is the
>>>> cache option not working, or am I missing something?
>>>>
>>>> Please find attached my sample code showing this issue. Maybe I
>>>> need to file a Jire. Could someone please review it and tell me
>>>> if I need to add it or jira or how to fix?
>>>>
>>>> <canvas height="100%" width="100%" debug="false">
>>>>
>>>> <simplelayout axis="y" spacing="10" inset="10"/>
>>>>
>>>> <attribute name="cnt" type="number" value="0"/>
>>>>
>>>> <view name="imagecontainer" x="${parent.width/2 - this.width/2}"
>>>> width="512" height="512" bgcolor="#000000">
>>>> <view name="image" id="imageviewport" stretches="both"
>>>> x="${parent.width / 2 - this.width / 2}"
>>>> y="${parent.height / 2 - this.height / 2}">
>>>> </view>
>>>> </view>
>>>>
>>>> <view name="imagecontrolview" x="${parent.width/2 - this.width/
>>>> 2}">
>>>> <simplelayout axis="x" spacing="10"/>
>>>> <button text="Start">
>>>> <handler name="onclick">
>>>> <![CDATA[
>>>> this.onclick.clearDelegates();
>>>> this.del = new LzDelegate(this,
>>>> "stopTimer");
>>>> this.del.register(this, "onclick");
>>>> parent.time.updateTimer(this);
>>>> ]]>
>>>> </handler>
>>>> <method name="stopTimer">
>>>> <![CDATA[
>>>> this.setAttribute("text", "Start");
>>>> parent.time.del.disable();
>>>> this.onclick.clearDelegates();
>>>> this.del = new LzDelegate(this,
>>>> "restartTimer");
>>>> this.del.register(this, "onclick");
>>>> ]]>
>>>> </method>
>>>> <method name="restartTimer">
>>>> <![CDATA[
>>>> this.setAttribute("text", "Stop");
>>>> parent.time.del.enable();
>>>> parent.time.updateTimer(this);
>>>> this.onclick.clearDelegates();
>>>> this.del = new LzDelegate(this,
>>>> "stopTimer");
>>>> this.del.register(this, "onclick");
>>>> ]]>
>>>> </method>
>>>> </button>
>>>>
>>>> <text name="time" resize="true"
>>>> fontsize="14" fontstyle="bold">
>>>>
>>>> <method name="updateTimer">
>>>> <![CDATA[
>>>> canvas.loadImage();
>>>> if (typeof this.del == "undefined")
>>>> {
>>>> this.del = new
>>>> LzDelegate(this, "updateTimer");
>>>> LzTimer.addTimer(this.del,
>>>> 100);
>>>> }
>>>> else
>>>> LzTimer.resetTimer(this.del,
>>>> 100);
>>>> ]]>
>>>> </method>
>>>> </text>
>>>> </view>
>>>>
>>>> <method name="loadImage">
>>>> <![CDATA[
>>>> canvas.cnt++;
>>>> canvas.imagecontrolview.time.setAttribute("text",
>>>> cnt);
>>>>
>>>> var d = new Date();
>>>> var t = d.getDate() + "-" + (d.getMonth()+1) + "-" +
>>>> d.getFullYear() + "_" + d.getHours()
>>>> + ":" + d.getMinutes() + ":" +
>>>> d.getSeconds() + "." + d.getMilliseconds();
>>>> Debug.write("LoadImage: " + cnt);
>>>>
>>>> canvas.imagecontainer.image.setSource("http://www.kroll-mobile.de/rw_common/
>>>> images/140x140shadow.png?ts=" + t);
>>>> delete d;
>>>> delete t;
>>>> ]]>
>>>> </method>
>>>>
>>>> </canvas>
>>>>
>>>> KInd regards,
>>>> Michael.
>>>
>>
More information about the Laszlo-dev
mailing list