Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

182 views

Published on

Drupalの認証ユーザー向けページキャッシュを安全に行う方法とTIPSを紹介しています。
Cookie等の認証情報をパース

Published in: Business
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Drupalד高速化“ 認証ユーザーキャッシュ
  2. 2. 2 ABOUTME Job : 小さな “CDN会社” レッドボックス ※取り扱いトラフィックは約50Gbps前後(2017年時点) Name: 小川 かつひさ (KATSUHISA OGAWA) Like : キャッシュ・負荷分散・WEB高速化 https://www.facebook.com/ogawaka WEB高速化ブログ Past : いんふら屋さん サーバーやスイッチを設定したり色々やってるアレ http://blog.redbox.ne.jp
  3. 3. 3 Drupalの特徴/他のCMSとの違い DrupalとWordpressを比較 WORDPRESS ・所謂ブログタイプで参照のみのケースが多い ・ログインユーザーは記事更新など運営管理がメイン DRUPAL ・ユーザー権限の管理が柔軟 ・ブログ運営からコンシューマーサービスまで幅が広い
  4. 4. 4 Drupalの特徴/他のCMSとの違い プロジェクトの複雑さと最適なプラットフォーム 出典:https://annai.co.jp/article/drupal-wordpress-and-all-the- rest-how-to-choose-a-web-platform
  5. 5. 5 認証ユーザーキャッシュが必須のDrupal Drupalはログイン前提で 利用されるケースがおおい。 高速化には 認証ユーザー向けキャッシュが必須 =
  6. 6. 6 DrupalをCDNで利用するためには 主要CDNベンダで案内している手順 1. CDNベンダ側の初期設定 2. CDNモジュール※1をDrupalに導入 3. CDNサービスのサブドメインをCDNモジュール設定画面で登録 4. Drupalのキャッシュクリア ※1. CDN Module https://www.drupal.org/project/cdn
  7. 7. 7 DrupalをCDNで利用するためには Drupal CDNモジュールは指定された拡張子の FQDNをCDNベンダのFQDNに書き換える。 または書き換えをおこなわないURLのルールを 設定できる。 Drupal CDNモジュールとは メリット  WEBサイトのDNS変更不要  CDN化したいコンテンツの制御がDrupal内で完結 デメリット  モジュールの不具合、設定ミスでサイトが全断する恐れあり  ページキャッシュを行うには課題がある
  8. 8. 8 CDNで Drupalのページを 安全にキャッシュする。
  9. 9. 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.*$" サンプル(正規表現) 課金関係のモジュールが利用しているパス カート関連のモジュールのパス ソーシャルログイン関連のパス その他キャッシュさせない項目
  10. 10. 10 Drupal×CDNの設定 キャッシュさせる設定 ・特定のレスポンスヘッダを削除または無視する Drupalの各種ページはD7/D8共に以下の様なレスポンスヘッダが付与される。 Cache-Control:no-cache, must-revalidate Expires:Sun, 19 Nov 1978 05:00:00 GMT ※ 19 Nov 1978はDrupal創業者Driesの誕生日 CDNベンダはno-cacheが付与されている/Expiresが過去の日付の場合 キャッシュしない動作がデフォルトであることがほとんどのため必須設定。 これでキャッシュすること自体は可能だが、次のような事故が発生する。 ・User1さんがログイン後WEBサイトにアクセス。 ・User2さんがログイン後同じページにアクセスすると、 User1さんでキャッシュした情報が見えてしまう!!
  11. 11. 11 外部キャッシュ(CDN)の注意点 そう、こんなふうに CDNが情報漏洩につながる危険
  12. 12. 12 安全に 認証ユーザーを キャッシュさせる。
  13. 13. 13 Drupal×CDNの設定 それには、スパイスとチューニングが必要 SPICE TUNING
  14. 14. 14 Drupal×CDNの設定 CDNのキャッシュKEYとは? どのような情報をもとにキャッシュをおこなうかというルール。 一般的にはURLを基準に、クエリストリングや特定のヘッダ情報などを キャッシュKEYに指定する。 サンプルリクエスト http://aaaaa.com/test.html キャッシュKEY:URL http://aaaaa.com/test.html キャッシュKEY :URL+クエリ http://aaaaa.com/test.html http://aaaaa.com/test.html?1234 http://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)
  15. 15. 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人のユーザー
  16. 16. 16 Drupal×CDNの設定(TUNING) Cookieのチューニング Cookieの中には通常セッション以外にも様々な情報が格納される。 リクエストするたびに変更されるユニークな値もあるため、 そのため、セッションキーだけ取り出した後、キャッシュキーにする。 Cookie:Drupal.toolbar.collapsed=0;_ga=GA1.3.731444347.1493815250;_gid=GA1.3.1263749221.1500 647187; SESS9ca48a5e37d1sbsdsf3s1s0bses3s3sb_2Iw6B3YnZsNCswyTsy4l2kdGY_yPxRbwT4YU; has_js=1 Cookie:SESS9ca48a5e37d1sbsdsf3s1s0bses3s3sb_2Iw6B3YnZsNCswyTsy4l2kdGY_yPxRbwT4YU; > これで、HIT率を低下させることなく、 安全にページキャッシュが可能。
  17. 17. 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: DrupalCoreCacheNullBackendFactory 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
  18. 18. 18 正直、Cookieのパースなんて やってられないですよね? ということで、面倒な設定を詰め込んだ DRUPALCDNを作ってみた。
  19. 19. Rapid START CDNサービス 19 無料で開始 プリセットを用意 マルチプラットフォーム https://cdn.tokyo ※Drupalとエッジサーバーを連携させて開発 「CDN 無料」で検索
  20. 20. Rapid START CDNサービス 20 Rapid STARTの特徴  無料でSTART  DNSを変更するだけでOK  1秒以下の高速キャッシュ削除  DrupalをCDN化するプリセット(実装済)  SSL(HTTP/2)配信も可能(実装済)  タグベースのパージAPIも提供(する予定)  オリジンサーバーへHOSTヘッダを透過 アクティブドメイン = 243個
  21. 21. DEMO 21 最後に少しだけDEMO
  22. 22. MERCI!! =)

×