以前にこの質問をしたことがあり、私の問題は実際には存在しないと誤解していました (「キャッシングと HTTPS 」を参照)。私は間違っていた; 問題は存在します。
私の問題の説明は次のとおりです。
- HTTP ページからリソース (たとえば、resource-a ) をロードすると (HTTP ページではすべてのリソースが HTTP から取得されます)
200 OK
、. ページをリロードする (または別の HTTP ページに移動する) と、resource-a が304 Not Modified
. - HTTPS ページから resource-a を読み込むと (HTTPS ページではすべてのリソースが HTTPS から読み込まれます)、resource-a は HTTPS から読み込まれ、
200 OK
. そして、ページをリロードする (または別の HTTPS ページに移動する) と、304 Not Modified
. - HTTP ページに戻ると、resource-a はまだ
304 Not Modified
. - HTTPS ページに戻ると、resource-a が
200 OK
. キャッシュされたコピーはどうなりましたか? キャッシュするにはどうすればよいですか?
ヘッダーの例を次に示します。
Request URL: https://styles.mydomain.com/assets/styles/main.css
Request Method: GET
Status Code: 200 OK
Request Headers
Accept: text/css,*/*;q=0.1
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Connection: keep-alive
Host: styles.mydomain.com
Referer: https://www.mydomain.com/sign-in/
User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Response Header
Accept-Ranges: bytes
Cache-Control: public
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 11836
Content-Type: text/css
Date: Tue, 02 Oct 2012 09:51:20 GMT
Expires: Fri, 30 Sep 2022 09:51:20 GMT
Keep-Alive: timeout=5, max=99
Last-Modified: Tue, 02 Oct 2012 09:25:30 GMT
Server: Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/0.9.7a mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.3.8
Vary: Accept-Encoding