web-dev-qa-db-ja.com

Cloudflareが期待どおりにキャッシュしない

Cloulflareが特定の静的jsファイルをキャッシュしないのはなぜでしょうか。

Reuqestを考えると:

curl -I http://www.testlifeinuk.com/dist/lifeinuk.js

ヘッダーは次のように返されます:

HTTP/1.1 200 OK
Date: Mon, 12 Jan 2015 10:59:21 GMT
Content-Type: application/javascript
Connection: keep-alive
Set-Cookie: __cfduid=d11a9f01292153436a211a9d807a3399b1421060361; expires=Tue, 12-Jan-16 10:59:21 GMT; path=/; domain=.testlifeinuk.com; HttpOnly
X-Powered-By: Express
Etag: W/"507660-1420797981000"
Cache-Control: public, max-age=1382400
Last-Modified: Fri, 09 Jan 2015 10:06:21 GMT
Vary: Accept-Encoding
Via: 1.1 vegur
CF-Cache-Status: MISS
Expires: Wed, 28 Jan 2015 10:59:21 GMT
Server: cloudflare-nginx
CF-RAY: 1a78d818b4af0b81-LHR

私を困惑させるのは、何回リクエストをしても、それは常に戻るということです

CF-Cache-Status: MISS

なぜだろう?

7
Wudong

CloudFlare管理パネルでページルールを設定する必要があります。ページルールを使用する最初のステップは、ルールがトリガーされるタイミングを定義するパターンを定義することです。これらのパターンは、単一のURLなどの単純なものでも、複数のワイルドカードを含む複雑なものでもかまいません。あなたが単一のURLを持つコンテンツ管理システムを持っていると想像してください:

http://www.testlifeinuk.com

次に、URLパターンを使用してルールを作成しようとすると、

http://www.testlifeinuk.com

ホームページのみがキャッシュされます!

Webサイト全体をキャッシュしたい場合は、ワイルドカードを次のように使用する必要があります。

 *testlifeinuk.com/*

このようにして、すべてのページとリソースは次のようにCloudflareによってキャッシュされます。

http://www.testlifeinuk.com/dist/lifeinuk.js
http://www.testlifeinuk.com/mypage.html
https://www.testlifeinuk.com/mypage.html
https://testlifeinuk.com/mypage.html

ヘッダーの結果は次のようになります。

HTTP/1.1 200 OK
Date: Mon, 25 May 2015 10:21:05 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.39-0+deb7u2
Expires: Mon, 25 May 2015 10:51:05 GMT
Cache-Control: public, max-age=1800
Pragma: no-cache
Vary: Accept-Encoding
CF-Cache-Status: HIT            <<<<< Look this parameter
Server: cloudflare-nginx
CF-RAY: 1ec082ee43150e60-MXP
Content-Encoding: gzip

よろしく

6
Michelangelo

@Michelangeloが最初にCloudFlareページルールを設定する必要があることについて述べたことは別にして、デフォルトのキャッシュ動作を上書きしないように、応答ヘッダーが正しく設定されていることを確認する必要もあります。

Cache-Controlヘッダーが「private」、「no-store」、「no-cache」、または「max-age = 0」に設定されている場合、または応答にcookieがある場合、CloudFlareはキャッシュをキャッシュしません資源。それ以外の場合、Cache-Controlヘッダーが「public」に設定され、「max-age」が0より大きい場合、またはExpiresヘッダーが将来いつでも設定される場合は、リソースをキャッシュします。

参照: https://support.cloudflare.com/hc/en-us/articles/202775670-How-Do-I-Tell-Cloudflare-What-to-Cache-

そして、そのため、@ Rudy Leeは、ExpressではデフォルトのmaxAgeが0であるため、maxAgeオプションを設定することを忘れないでくださいと述べました。

参照: https://expressjs.com/en/api.html#express.static

3
AJ Hsu

もう1つの可能性は、.htaccessで定義されているものがCloudflareのキャッシュと競合している可能性があります。有効期限ヘッダーが設定されている場合、それらはCloudflareのキャッシュ設定をオーバーライドします。私はこれが自分のウェブサイトのケースであることがわかりました https://cf-cache-status.net

0
Jay