web-dev-qa-db-ja.com

特定のビューのキャッシュを無効にする

ビューにレンダリングされているtwig)でユーザーに乱数({{ random() }})を表示しています。ただし、ページを更新すると、同じように表示されます数。

私はいくつかのことを試みましたが、すべて失敗しました:

  1. admin/config/development/performanceのキャッシュを無効にしました
  2. ビューの詳細設定でキャッシュを無効化
  3. cacheexclude モジュールを使用しようとしました
  4. 私も無効化twigキャッシュ!

特定のtwigまたは特定のビューのキャッシュを完全に無効にするにはどうすればよいですか?

更新:

ちなみにレスポンスヘッダにはx-drupal-cache:HITというヘッダがあります。 (最初はMISSで、最初のロード後はHITです)なぜですか?

アップデート2:Internal Page Cacheもアンインストールしました。 x-drupal-cacheはなくなりましたが、ページはまだキャッシュされています!文字通りすべてを無効にしましたが、ビューのtwig。)に乱数を表示することはできません。

これが役立つ場合、これは私の応答ヘッダーです:

cache-control:must-revalidate, no-cache, private
content-encoding:gzip
content-type:text/html; charset=UTF-8
date:Wed, 28 Feb 2018 14:26:47 GMT
expires:Sun, 19 Nov 1978 05:00:00 GMT
server:nginx
status:200
strict-transport-security:max-age=15768000
vary:Accept-Encoding
x-content-type-options:nosniff
x-drupal-dynamic-cache:UNCACHEABLE
x-frame-options:SAMEORIGIN
x-generator:Drupal 8 (https://www.drupal.org)
x-ua-compatible:IE=Edge

ソリューション:

内部キャッシュモジュールとALSI big pipe モジュールもアンインストールしました。

1
Sky

残念ながら、ポイント1は匿名トラフィックでは機能しません。

内部ページキャッシュモジュールをアンインストールする必要があります。

またはトリガー

\Drupal::service('page_cache_kill_switch')->trigger();

ビューフックで。

ビューがほとんどまたはすべてのページに配置されている場合は、内部ページキャッシュをアンインストールします。これは、ページキャッシュキルスイッチも動的ページキャッシュを無効にし、両方のキャッシュを無効にしたくないためです。トラフィックが多すぎない。

さらに、いずれの場合も、ポイント2(ビューの詳細設定で無効にされたキャッシュ)が必要です。

更新:

ちなみにレスポンスヘッダーにはx-drupal-cache:HITというヘッダーがあります。 (これは初めてMISSであり、最初のロード後にHITです)なぜですか?

このヘッダーは内部ページキャッシュによって生成されます。HITは、このキャッシュから提供されることを意味します。

3
4k4

Drupal 8では、特定のビューのキャッシュを無効にするために

your view > ADVANCED > Caching > None

あなたの場合twigキャッシングはおそらく機能していますが、そのままにすることをお勧めします。

services.yml > twig.config:  cache: false

https://www.drupal.org/project/views_random_seed を使用して、ビュー内に乱数を作成することを検討してください

注:次の場合Drupal admin/config/development/performanceno cacheの設定よりもキャッシュが有効になりますデフォルトではどのビューも尊重されず、すべてのビューがキャッシュされます。 cache_control_override をインストールすると、これを解決し、no cacheで構成されたビューが機能するようになります。この問題の詳細については、モジュールのページ。

上記の問題は、drupalサイトとブラウザの間に他のキャッシュメカニズムがないことを前提としています。

1
GiorgosK