cdnで高速化!drupal認証ユーザーむけページキャッシュ設定
TRANSCRIPT
![Page 1: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/1.jpg)
Drupalד高速化“
認証ユーザーキャッシュ
![Page 2: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/2.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/3.jpg)
3
Drupalの特徴/他のCMSとの違い
DrupalとWordpressを比較
WORDPRESS
・所謂ブログタイプで参照のみのケースが多い・ログインユーザーは記事更新など運営管理がメイン
DRUPAL
・ユーザー権限の管理が柔軟・ブログ運営からコンシューマーサービスまで幅が広い
![Page 4: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/4.jpg)
4
Drupalの特徴/他のCMSとの違い
プロジェクトの複雑さと最適なプラットフォーム
出典:https://annai.co.jp/article/drupal-wordpress-and-all-the-rest-how-to-choose-a-web-platform
![Page 5: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/5.jpg)
5
認証ユーザーキャッシュが必須のDrupal
Drupalはログイン前提で利用されるケースがおおい。
高速化には認証ユーザー向けキャッシュが必須
=
![Page 6: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/6.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/7.jpg)
7
DrupalをCDNで利用するためには
Drupal CDNモジュールは指定された拡張子のFQDNをCDNベンダのFQDNに書き換える。または書き換えをおこなわないURLのルールを設定できる。
Drupal CDNモジュールとは
メリット
WEBサイトのDNS変更不要
CDN化したいコンテンツの制御がDrupal内で完結
デメリット
モジュールの不具合、設定ミスでサイトが全断する恐れあり
ページキャッシュを行うには課題がある
![Page 8: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/8.jpg)
8
CDNでDrupalのページを
安全にキャッシュする。
![Page 9: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/9.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/10.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/11.jpg)
11
外部キャッシュ(CDN)の注意点
そう、こんなふうに
CDNが情報漏洩につながる危険
![Page 12: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/12.jpg)
12
安全に認証ユーザーを
キャッシュさせる。
![Page 13: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/13.jpg)
13
Drupal×CDNの設定
それには、スパイスとチューニングが必要
SPICE TUNING
![Page 14: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/14.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/15.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/16.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/17.jpg)
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認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/18.jpg)
18
正直、Cookieのパースなんてやってられないですよね?
ということで、面倒な設定を詰め込んだDRUPALCDNを作ってみた。
![Page 19: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/19.jpg)
Rapid START CDNサービス
19
無料で開始 プリセットを用意 マルチプラットフォーム
https://cdn.tokyo※Drupalとエッジサーバーを連携させて開発
「CDN 無料」で検索
![Page 20: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/20.jpg)
Rapid START CDNサービス
20
Rapid STARTの特徴
無料でSTART
DNSを変更するだけでOK
1秒以下の高速キャッシュ削除
DrupalをCDN化するプリセット(実装済)
SSL(HTTP/2)配信も可能(実装済)
タグベースのパージAPIも提供(する予定)
オリジンサーバーへHOSTヘッダを透過
アクティブドメイン = 243個
![Page 21: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/21.jpg)
DEMO
21
最後に少しだけDEMO
![Page 22: CDNで高速化!Drupal認証ユーザーむけページキャッシュ設定](https://reader031.vdocuments.pub/reader031/viewer/2022030318/5a66ebad7f8b9a91298b4a37/html5/thumbnails/22.jpg)
MERCI!!=
)