"appcache validate" says cache-control: no-store but ... it isn't?



2 years ago
2 months ago


(Reporter: geoffrey.wiseman, Unassigned)


49 Branch

Firefox Tracking Flags

(Not tracked)



(1 attachment)



2 years ago
Created attachment 8798010 [details]

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Safari/602.1.50

Steps to reproduce:

Opened the developer console. Entered "appcache validate". Waited for the results. Compared results with network tab.

Actual results:

Firefox says resources are cache-control: no-store. Local curl output and Firefox itself imply that's not true.

Expected results:

Validation of my appcache that matches the actual headers.


2 years ago
Component: Untriaged → Developer Tools: Graphic Commandline and Toolbar
Product: Core → Firefox
Summary: appcache validate says cache-control: no-store but ... it isn't? → "appcache validate" says cache-control: no-store but ... it isn't?
Mike - I think you're better placed to triage this..
Flags: needinfo?(mratcliffe)
Let's take a look:
A33E6935F5693DA0398D4254D399D20B.cache.html has cache-control set to no-store. This will prevent the application cache from storing the file at line 7.

$ curl -I https://cloud.eaccess.ca/apollo/A33E6935F5693DA0398D4254D399D20B.cache.html
HTTP/1.1 200 OK
Date: Tue, 11 Oct 2016 13:20:39 GMT
Server: Apache/2.4.23 (Amazon) OpenSSL/1.0.1k-fips
Last-Modified: Sat, 24 Sep 2016 23:21:48 GMT
ETag: "1dd53f-53d4928aebb00"
Accept-Ranges: bytes
Content-Length: 1955135
Expires: 1
Content-Type: text/html; charset=UTF-8

The header contains an Expires value of 1. The RFC (https://tools.ietf.org/html/rfc2616#page-127) states:
"The format is an absolute date and time as defined by HTTP-date in section 3.3.1"

And then in section 3.3.1:
"Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format"

So, in short, you have an invalid Expires header which is forcing the cache to expire.
Last Resolved: 2 years ago
Flags: needinfo?(mratcliffe)
Resolution: --- → WORKSFORME
It's a good idea to set expires headers on your web server for *.appcache files to expire immediately. This avoids the risk of caching manifest files. For example, in Apache you can specify such a configuration as follows:
ExpiresByType text/cache-manifest "access plus 0 seconds"

You shouldn't do this for non-manifest files though.

Comment 4

2 years ago
The '1' was just a test value I changed in testing the apache conf with firefox -- although I believe what was there before was also bad. I've tweaked the Apache config and that change alone caused the validation to pass. Thanks.

I guess you're saying the invalid Expires value is causing the validation (or some component of Firefox) to think of it as "no-store" even though it isn't set to no-store? 

A more clear error would be nice here, if possible. Maybe the true values aren't accessible to the validator?


5 months ago
Product: Firefox → DevTools


2 months ago
Product: DevTools → DevTools Graveyard
You need to log in before you can comment on or make changes to this bug.