Closed Bug 654241 Opened 13 years ago Closed 8 years ago

Loading multiple instances of identical SWF file only pulls first instance from cache (if present)

Categories

(Core :: Networking: Cache, defect)

x86
Windows Vista
defect
Not set
major

Tracking

()

RESOLVED DUPLICATE of bug 446876

People

(Reporter: cormip, Unassigned)

Details

User-Agent:       Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Build Identifier: Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1

I am trying to load multiple instances of the same SWF on a page. Once the SWF is cached (previous or current visit), I want the 2nd, 3rd, 4th, etc instances to be pulled from the browser cache. However, only the 1st instance ever seems to pull from the cache.

This behavior is only seen in FireFox v3.6 & v4.0. I tested IE8, IE9 & Chrome, and all of those behave as you expect they would (if loaded at least once, all further calls pull from the cache).

I have a test page with the body as simple as this:

<object data="test.swf" id="myId1" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId2" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId3" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId4" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId5" width="300" height="120"><param name="movie" value="test.swf"></object>


Reproducible: Always

Steps to Reproduce:
Create a page that loads multiple instances of the same SWF file. For example:

<object data="test.swf" id="myId1" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId2" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId3" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId4" width="300" height="120"><param name="movie" value="test.swf"></object>
<object data="test.swf" id="myId5" width="300" height="120"><param name="movie" value="test.swf"></object>


Actual Results:  
Only the first SWF is pulled from the cache (if present and NOT stale). Each of the subsequent instances all re-download copies of the SWF independently.

Expected Results:  
1. If first load of page, first instance of SWF is downloaded from server, then subsequent instances of SWF are retrieved from local cache.

2. If page was already loaded (and SWF already in cache), then ALL instances checked for staleness and pulled from local cache (if still fresh).

Looking at FireBug, I can see that only the first request to the SWF has the following specific Request Headers:

If-Modified-Since:  Thu, 28 Apr 2011 16:26:35 GMT
If-None-Match:  "34a1b9ac15cc1:0"
Cache-Control:  max-age=0

The 2nd through Nth requests do not have these headers?!? The full set of headers looks like this:
First SWF on Page
Request Headers

GET test.swf HTTP/1.1
Host: dev.xxxxxxxxxxx.com
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://dev.xxxxxxxxxxx.com/test.cfm
Cookie: JSESSIONID=84305edd230f682f47a34c235b2b253c3059
If-Modified-Since: Thu, 28 Apr 2011 16:26:35 GMT
If-None-Match: "34a1b9ac15cc1:0"
Cache-Control: max-age=0

Response Headers

HTTP/1.1 304 Not Modified
Last-Modified: Thu, 28 Apr 2011 16:26:35 GMT
Accept-Ranges: bytes
Etag: "34a1b9ac15cc1:0"
Server: Microsoft-IIS/7.0
Date: Thu, 28 Apr 2011 17:38:58 GMT

2nd, 3rd, 4th, Nth SWF on Page
Request Headers

GET test.swf HTTP/1.1
Host: dev.xxxxxxxxxxx.com
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://dev.xxxxxxxxxxx.com/test.cfm
Cookie: JSESSIONID=84305edd230f682f47a34c235b2b253c3059

Response Headers

HTTP/1.1 200 OK
Content-Type: application/x-shockwave-flash
Last-Modified: Thu, 28 Apr 2011 16:26:35 GMT
Accept-Ranges: bytes
Etag: "34a1b9ac15cc1:0"
Server: Microsoft-IIS/7.0
Date: Thu, 28 Apr 2011 17:38:58 GMT
Content-Length: 31063
> The 2nd through Nth requests do not have these headers?!?

Because they can't get access to the cache entry (which is locked by the first request, which is still in progress), so don't know our cached ETag and Last-Modified time, so can't do a conditional request.

This looks like a duplicate of the bug about allowing multiple consumers to read the cache at once.
Whiteboard: DUPEME
Agreed - this is a dup
As of Firefox release 7.0.1 this BUG continues to exist and cause problems for my users. This BUG does not exist in either Internet Explorer or Google Chrome. Does someone have an ID for the bug this is a duplicate of?
see comment 1 - can you figure out the dup and mark it? thanks!
Flags: needinfo?(michal.novotny)
Whiteboard: DUPEME → DUPEME[necko-backlog]
It's a dupe of 446876.
Status: UNCONFIRMED → RESOLVED
Closed: 8 years ago
Flags: needinfo?(michal.novotny)
Resolution: --- → DUPLICATE
Whiteboard: DUPEME[necko-backlog]
You need to log in before you can comment on or make changes to this bug.