Answers:
对于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中,您可以将cache称为max-age,直到您希望对页面输出进行缓存为止。要删除特定页面(控制器页面)的缓存,请写入'max-age' => 0,。
public function myPage() {
  return [
   '#markup' => time(),
   '#cache' => ['max-age' => 0,],    //Set cache for 0 seconds.
  ];
} 
如果您需要对contrib模块做一些事情,可以使用RouteSubscriber来解决缓存问题。您需要服务...或者drupal gr如果有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);
  }
 }
}
您可以使用此模块来避免drupal缓存,也可以避免服务器端缓存,例如清漆https://www.drupal.org/project/ape
它在acquia服务器上的Varnish缓存中为我工作。