Drupal 8サイトでキャッシュをアクティブ化しました。もちろん、すべてのページが期待どおりにキャッシュされています。
ただし、特定のページでそのキャッシュをバイパスしたいのですが。
私のコントローラーでは、次のようにページを作成しました。
public function myPage() {
return [
'#markup' => time(),
];
}
Drupalページをキャッシュしないようにするにはどうすればよいですか?
Drupal 7:の場合
Drupalには、ページをキャッシュ不可に設定するために使用できる関数drupal_page_is_cacheable()があります。
ここにドキュメントがあります: https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/drupal_page_is_cacheable/7
Drupal 8:の場合
// Deny any page caching on the current request.
\Drupal::service('page_cache_kill_switch')->trigger();
次に、コードは次のとおりです。
public function myPage() {
\Drupal::service('page_cache_kill_switch')->trigger();
return [
'#markup' => time(),
];
}
いつものように、一度キャッシュをクリーンアップしてください。
ルート宣言からのカスタムページのキャッシュを無効にします。カスタムコントローラー(カスタムモジュール)のキャッシュを無効にする場合は、
no_cache
オプション(YOUR_MODULE.routing.yml)。例:ファイル:mymodule.routing.yml
mymodule.myroute:
path: '/mymodule/mypage'
defaults:
_controller: '\Drupal\mymodule\Controller\Pages::mypage'
_title: 'No cache page'
requirements:
_access: 'TRUE'
options:
no_cache: 'TRUE'
Drupal 8では、ページの出力をキャッシュするまで、キャッシュをmax-ageとして言及できます。特定のページ(コントローラページ)のキャッシュを削除するには、'max-age' => 0,
。
public function myPage() {
return [
'#markup' => time(),
'#cache' => ['max-age' => 0,], //Set cache for 0 seconds.
];
}
Contribモジュールで何かをする必要がある場合は、RouteSubscriberを使用してキャッシュの問題を修正できます。あなたはサービスが必要です...または単にdrupal gr
if drupalコンソール。
namespace Drupal\mymodule\Routing;
use Drupal\Core\Routing\RouteSubscriberBase;
use Symfony\Component\Routing\RouteCollection;
class RouteSubscriber extends RouteSubscriberBase {
/**
* {@inheritdoc}
*/
protected function alterRoutes(RouteCollection $collection) {
// Find the route you need ...
if ($route = $collection->get('some.contrib.route')) {
$options = $route->getOptions();
$options['no_cache'] = TRUE;
$route->setOptions($options);
}
}
}
詳細情報 https://www.drupal.org/docs/8/api/routing-system/altering-existing-routes-and-adding-new-routes-based-on-dynamic-ones を参照してください=
このモジュールを使用して、drupalキャッシュおよびワニスのようなサーバー側キャッシュ https://www.drupal.org/project/ape を回避できます。
AcquiaサーバーのVarnishキャッシュで動作します。