In Drupal 8 how can I print the page title within a paragraph.html.twig
An alternative strategy to setting cache context is to use a placeholder. This is a more complex approach but you will never have issues with the database cache table filling up - as 4k4 points out this can be a real problem.

All of this code goes in themename.theme.

First we must define a callback function that returns the page title to the placeholder:

function _MyTheme_paragraphs_title_placeholder($page_title) {
  // Must go here, if you attempt to pass in $page_title from preprocess it will
  // be cached!
  $request = \Drupal::request();
  $route_match = \Drupal::routeMatch();
  $page_title = \Drupal::service('title_resolver')-&gt;getTitle($request, $route_match-&gt;getRouteObject());

  $title_array = array(
    '#theme' =&gt; 'page_title',
    '#title' =&gt; $page_title,
  );

  return $title_array;
}


Next we create the placeholder in preprocess, we will print a variable in the template, so we must populate it with the placeholder:

function MyTheme_preprocess_paragraph(&amp;$variables) {
  // Note: the first item in the #lazy_builder array is our callback.
  $placeholder_title = array(
    '#lazy_builder' =&gt; ['_MyTheme_paragraphs_title_placeholder', ['page_title']],
    '#create_placeholder' =&gt; TRUE,
  );

  $variables['title'] = $placeholder_title;
}


Finally create copy the paragraphs template and use the title variable:

&lt;div{{ attributes.addClass(classes) }}&gt;
  {{ title }}
  {{ content }}
&lt;/div&gt;


This is how I have implemented the breadcrumb title feature in Adaptivetheme (D8 version), to avoid cache context url as I noticed the database entries, I think it's a great method and I'd love more feedback if I have done something wrong - I'm a themer of course, not a hardcore dev :)