cdnで高速化!drupal認証ユーザーむけページキャッシュ設定

22
Drupalד高速化“ 認証ユーザーキャッシュ

Upload: katsuhisa-ogawa

Post on 23-Jan-2018

86 views

Category:

Business


0 download

TRANSCRIPT

Page 1: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

Drupalד高速化“

認証ユーザーキャッシュ

Page 2: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

2

ABO

UT M

E

Job : 小さな “CDN会社” レッドボックス※取り扱いトラフィックは約50Gbps前後(2017年時点)

Name: 小川 かつひさ (KATSUHISA OGAWA)

Like : キャッシュ・負荷分散・WEB高速化

https://www.facebook.com/ogawaka

WEB高速化ブログ

Past : いんふら屋さんサーバーやスイッチを設定したり色々やってるアレ

http://blog.redbox.ne.jp

Page 3: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

3

Drupalの特徴/他のCMSとの違い

DrupalとWordpressを比較

WORDPRESS

・所謂ブログタイプで参照のみのケースが多い・ログインユーザーは記事更新など運営管理がメイン

DRUPAL

・ユーザー権限の管理が柔軟・ブログ運営からコンシューマーサービスまで幅が広い

Page 4: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

4

Drupalの特徴/他のCMSとの違い

プロジェクトの複雑さと最適なプラットフォーム

出典:https://annai.co.jp/article/drupal-wordpress-and-all-the-rest-how-to-choose-a-web-platform

Page 5: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

5

認証ユーザーキャッシュが必須のDrupal

Drupalはログイン前提で利用されるケースがおおい。

高速化には認証ユーザー向けキャッシュが必須

=

Page 6: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

6

DrupalをCDNで利用するためには

主要CDNベンダで案内している手順

1. CDNベンダ側の初期設定

2. CDNモジュール※1をDrupalに導入

3. CDNサービスのサブドメインをCDNモジュール設定画面で登録

4. Drupalのキャッシュクリア

※1. CDN Module https://www.drupal.org/project/cdn

Page 7: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

7

DrupalをCDNで利用するためには

Drupal CDNモジュールは指定された拡張子のFQDNをCDNベンダのFQDNに書き換える。または書き換えをおこなわないURLのルールを設定できる。

Drupal CDNモジュールとは

メリット

WEBサイトのDNS変更不要

CDN化したいコンテンツの制御がDrupal内で完結

デメリット

モジュールの不具合、設定ミスでサイトが全断する恐れあり

ページキャッシュを行うには課題がある

Page 8: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

8

CDNでDrupalのページを

安全にキャッシュする。

Page 9: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

9

Drupal×CDNの設定

キャッシュさせないPATH

^\/status\.php$""^\/update\.php""^\/install\.php""^\/apc\.php$""\/admin""\/admin\/.*$""\/user""\/user\/.*$"

"\/users\/.*$""\/cron\.php""^\/info\/.*$""^.*\/ajax\/.*$""^.*\/ahah\/.*$""^\/system\/files\/.*$""^.*\/edit.*$"

サンプル(正規表現)

課金関係のモジュールが利用しているパスカート関連のモジュールのパスソーシャルログイン関連のパス

その他キャッシュさせない項目

Page 10: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

10

Drupal×CDNの設定

キャッシュさせる設定

・特定のレスポンスヘッダを削除または無視する

Drupalの各種ページはD7/D8共に以下の様なレスポンスヘッダが付与される。

Cache-Control:no-cache, must-revalidateExpires:Sun, 19 Nov 1978 05:00:00 GMT※ 19 Nov 1978はDrupal創業者Driesの誕生日

CDNベンダはno-cacheが付与されている/Expiresが過去の日付の場合キャッシュしない動作がデフォルトであることがほとんどのため必須設定。

これでキャッシュすること自体は可能だが、次のような事故が発生する。

・User1さんがログイン後WEBサイトにアクセス。・User2さんがログイン後同じページにアクセスすると、

User1さんでキャッシュした情報が見えてしまう!!

Page 11: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

11

外部キャッシュ(CDN)の注意点

そう、こんなふうに

CDNが情報漏洩につながる危険

Page 12: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

12

安全に認証ユーザーを

キャッシュさせる。

Page 13: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

13

Drupal×CDNの設定

それには、スパイスとチューニングが必要

SPICE TUNING

Page 14: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

14

Drupal×CDNの設定

CDNのキャッシュKEYとは?

どのような情報をもとにキャッシュをおこなうかというルール。一般的にはURLを基準に、クエリストリングや特定のヘッダ情報などをキャッシュKEYに指定する。

サンプルリクエストhttp://aaaaa.com/test.html

キャッシュKEY:URLhttp://aaaaa.com/test.html

キャッシュKEY :URL+クエリhttp://aaaaa.com/test.htmlhttp://aaaaa.com/test.html?1234http://aaaaa.com/test.html?5678

キャッシュKEY :URL+Vary User-Agentヘッダhttp://aaaaa.com/test.html(Vary User-Agent:Iphone)http://aaaaa.com/test.html(Vary User-Agent:Android)http://aaaaa.com/test.html(Vary User-Agent:Chrome)

Page 15: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

15

Drupal×CDNの設定(SPICE)

キャッシュKEYにCookieを含める

Cookie内に保存されているセッションキーをキャッシュKEYに含めることにより、ユーザーごとにキャッシュを分けることができる。

キャッシュKEY :URL+Cookie

http://drupal-sample.com/test(SESS:user1xxxxx)http://drupal-sample.com/test(SESS:user2xxxxx)http://drupal-sample.com/test(SESS:user3xxxxx)

>http://drupal-sample.com/test

User1

User5

User2

User3 User4

5個のキャッシュに分ける5人のユーザー

Page 16: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

16

Drupal×CDNの設定(TUNING)

Cookieのチューニング

Cookieの中には通常セッション以外にも様々な情報が格納される。

リクエストするたびに変更されるユニークな値もあるため、そのため、セッションキーだけ取り出した後、キャッシュキーにする。

Cookie:Drupal.toolbar.collapsed=0;_ga=GA1.3.731444347.1493815250;_gid=GA1.3.1263749221.1500647187; SESS9ca48a5e37d1sbsdsf3s1s0bses3s3sb_2Iw6B3YnZsNCswyTsy4l2kdGY_yPxRbwT4YU; has_js=1

Cookie:SESS9ca48a5e37d1sbsdsf3s1s0bses3s3sb_2Iw6B3YnZsNCswyTsy4l2kdGY_yPxRbwT4YU;

>これで、HIT率を低下させることなく、

安全にページキャッシュが可能。

Page 17: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

17

Drupal×CDNの設定(TUNING)

DrupalのCoreキャッシュはOFF

Drupal7/8ともに管理画面からキャッシュ機能をOFFにしてください。※Drupal8はDynamic CacheもOFFにする。

Drupal8のDynamic Cache無効化

以下の内容を各ファイルに追記する。

sites/default/services.yml

services:cache.backend.null:class: Drupal\Core\Cache\NullBackendFactory

sites/default/settings.php

$settings['cache']['bins']['render'] = 'cache.backend.null';$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null’;

参考サイト:https://www.drupal.org/node/2598914

Page 18: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

18

正直、Cookieのパースなんてやってられないですよね?

ということで、面倒な設定を詰め込んだDRUPALCDNを作ってみた。

Page 19: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

Rapid START CDNサービス

19

無料で開始 プリセットを用意 マルチプラットフォーム

https://cdn.tokyo※Drupalとエッジサーバーを連携させて開発

「CDN 無料」で検索

Page 20: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

Rapid START CDNサービス

20

Rapid STARTの特徴

無料でSTART

DNSを変更するだけでOK

1秒以下の高速キャッシュ削除

DrupalをCDN化するプリセット(実装済)

SSL(HTTP/2)配信も可能(実装済)

タグベースのパージAPIも提供(する予定)

オリジンサーバーへHOSTヘッダを透過

アクティブドメイン = 243個

Page 21: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

DEMO

21

最後に少しだけDEMO

Page 22: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定

MERCI!!=

)