web-dev-qa-db-ja.com

Boost Cachingをインストールしましたが、動的ブロックとWebフォームもキャッシュされます

Drupal 7のBoostモジュールをインストールしましたが、今はWebformsおよびcommerce shopping cartブロックなどの動的ブロックが機能していません。キャッシュされている可能性が高いですが、これらの動的ブロックを取得するいくつかの方法は何ですか?機能しますか?admin/*user/*checkout/*の除外パスをすでに追加しているので、これらのページはキャッシュされません。

5

@duckxが言ったように、問題は.htaccessファイルにありました。彼が画像を投稿したので、自分のファイルと比較するのは難しいと思いました。これが私が使用している最後の.htaccessです。これまでのところ機能します。

変更のリスト:

  1. 別の投稿(Drupalフォーラム)で見つけたので、GZIP行を追加しました
  2. かわった RewriteRule .* - [S=2]からRewriteRule .* - [S=3][S=N]部分 スキップする行数を指定 。したがって、GZIPパーツを削除すると、その番号を変更する必要がある場合があります。

関連のないトピックについては、ReCaptchaのv2(No-Captcha ReCaptcha)も使用していますが、ブーストキャプチャモジュールは必要ありません。

.htaccessファイルを使用しているので、コピーと貼り付けを行うと問題なく機能します。

    ### BOOST START ###

  # Allow for alt paths to be set via htaccess rules; allows for cached variants (future mobile support)
  RewriteRule .* - [E=boostpath:normal]

#  # Apache 2.4 bug workaround
#  # Enables Search from home page https://drupal.org/node/2078595#comment-8724321
#  RewriteCond %{REQUEST_METHOD} ^(POST)$
#  RewriteCond %{REQUEST_URI} /
#  RewriteRule .* / [S=3]

  # Caching for anonymous users
  # Skip boost IF not get request OR uri has wrong dir OR cookie is set OR request came from this server OR https request
  RewriteCond %{REQUEST_METHOD} !^(GET|HEAD)$ [OR]
  RewriteCond %{REQUEST_URI} (^/(admin|cache|misc|modules|sites|system|openid|themes|node/add|comment/reply))|(/(edit|user|user/(login|password|register))$) [OR]
  RewriteCond %{HTTPS} on [OR]
  RewriteCond %{HTTP_COOKIE} DRUPAL_UID [OR]
  RewriteCond %{ENV:REDIRECT_STATUS} 200
  RewriteRule .* - [S=3]

  # GZIP
  RewriteCond %{HTTP:Accept-encoding} !gzip
  RewriteRule .* - [S=1]
  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_Host}%{REQUEST_URI}_%{QUERY_STRING}\.html\.gz -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_Host}%{REQUEST_URI}_%{QUERY_STRING}\.html\.gz [L,T=text/html,E=no-gzip:1]

#  # Apache 2.4 bug workaround
#  # Enables caching of index/ home page
#  RewriteCond %{REQUEST_URI} ^/index\.php$
#  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_Host}/\_%{QUERY_STRING}\.html -s
#  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_Host}/\_%{QUERY_STRING}\.html [L,T=text/html]

  # NORMAL
  RewriteCond %{DOCUMENT_ROOT}/cache/%{ENV:boostpath}/%{HTTP_Host}%{REQUEST_URI}_%{QUERY_STRING}\.html -s
  RewriteRule .* cache/%{ENV:boostpath}/%{HTTP_Host}%{REQUEST_URI}_%{QUERY_STRING}\.html [L,T=text/html]

  ### BOOST END ###
1
Diego Jancic

これは、Boostが問題を理解するために行うことの全体像を見るのに役立ちます。 Boostは、圧縮されてレンダリングされたHTMLページを保存し、Drupalをバイパスして匿名ユーザーに直接サービスを提供します。これは、ほとんど匿名のユーザーベースにコンテンツを配信するためのサーバー中心の優れたソリューションです。目的は何ですか。 Drupalが動的コンテンツをレンダリングするために引き継ぐ必要がある場合/場所はIDです。

ある種の漸進的に分離されたパスを試すことができます。エバーグリーンである必要のあるコンテンツのブロックを特定し、それらをフロントエンドで動的にロードするようにサイトを機能させることができます。動的になるいくつかのcontribモジュールブロックが新しくなったようです。あなたは AJAX Blocks をcontribブロックで設定することでうまくいくかもしれません、それらは互換性がないかもしれないことに注意してくださいAJAX Blocksそしてあなたは理由とおそらくデバッグを理解する必要があるかもしれません/独自のソリューションを実装します。

もう1つの方法は、ユーザーの意図に基づいてBoostが不要になったときにすばやく特定し、それを無効にすることです。たとえば、カートページにリダイレクトされるか、ユーザーログインページにアクセスしたら、ユーザーをサイトの安全なバージョンにリダイレクトする必要があります。 SSLリクエストでキャッシュをバイパスするようにBoostを設定できます。

万能のソリューションはありません。ユーザーベース、キャッシュ要件などによっては、あるパスが別のパスよりも適切に機能する場合があります。

1
Shawn Conn

チェックしているようですCache blocks(ブロックキャッシュ)config/development/performance。オフにしてみてください。 Boostsを使用する場合、その機能を使用する必要はありません。

1
Yusef

フォームが送信されなかったのは、v1.1が間違った.htaccessデータを生成したためです。私は1.0に戻り、そのコードを取得して代わりに使用しました。その後、1.1に切り替えました

http://prntscr.com/b8qnym -生成された1.1と1.0の.htaccessコードの比較。

1.0バージョンのhtaccessコードが1.1で動作することも確認できます

1.1では、管理画面でもすべてのフォームが機能しなくなる不正な.htaccessコードが生成されます。

1