I installed Drupal 8.1.7.

It runs behind a Varnish 4 cache.

I want to get ESI working.

I started looking for docs re ESI.

The obvious module

ESI: Edge Side Includes

has no Drupal 8 support

This post implies that BigPipe, ESI & Dynamic Page Cache are different things

Drupal 8 Module of the Week: BigPipe

This concept is essential for BigPipe, but also for ESI and it's also what enabled Drupal 8’s Dynamic Page Cache.

This post says that the ESI discussion was a basis for 'Dries’ "Making Drupal 8 fly" blog post'

Drupal 8's Dynamic Page Cache

Somewhere in mid-February, Dries asked me what the state was of ESI support in Drupal 8, whether partial pre-rendering was possible, and so on. I replied in two ways: in short ("No, ESI is not fully supported yet"8) and comprehensively, describing how full ESI support was now more feasible than ever, which other exciting things are possible with the render- and caching-related improvements, and so on. That e-mail I sent formed the foundation of Dries’ "Making Drupal 8 fly" blog post :)

But the referenced post

Making Drupal 8 fly

doesn't even mention ESI.

I'm running around in circles :-/

Is ESI available & ready in Drupal8?
Where are the docs for it?
Are there any uptodate posts that talk about the details of configuring ESI + BigPipe + DynamicPageCache ?

Comments

VM’s picture

ESI will require the ESI module in D8 as was needed in D7.

stating ESI.module has no support in D8 is misleading. There is no port yet, yes. But there is support.

D8. We haven't begun work on a Drupal 8 port yet. Also, we don't know whether it'd be a fairly direct port, or if the new HTTP kernel gives us a better place to integrate, which would imply a big architectural shift. Right now, the most useful task would be an investigation into the D8 HTTP kernel, to understand whether that's a promising integration point.

The above quoted from the ESI.module project page.

Bigpipe for D8 is @ https://www.drupal.org/project/big_pipe

baena’s picture

So no ESI module, no ESI functionality?

I don't really get the 'no port, but support' :-/ There's no ESI module available in Drupal8 now, so there's no 'supported release' to support, right?

I'm aware of BigPipe from reading and quoting the article above. Iiuc, the 'project' module at https://www.drupal.org/project/big_pipe is not relevant anymore since it's included in core now.

By re-quoting the deprecated big_pipe URL are you saying it's still needed for ESI? Beyond just whatever's in core?

VM’s picture

IMO development is support. until such time as the project page identifies that a Drupal 8 port won't be forthcoming and is no longer actively maintained (project page indicates its actively maintained and the D7 commit log shows activity as recently as 5 months ago), I wouldn't consider it unsupported. I am surprised there isn't at the very least a 8.x -dev roll of the module but I didn't dig to see if anything was available via git that isn't widely known about.

My link to big pipe was simply for a start for your in your documentation quest. When I briefly scanned the documentation link on the project page I noted "Faster with zero configuration! BigPipe is able to make things faster automatically thanks to Drupal 8's improved render pipeline & render API, and in particular thanks to the cacheability metadata and auto-placeholdering." This indicates to me there isn't anything to configure with reference to bigpipe.

baena’s picture

I'm just going by what the docs refer to when they talk about support

https://www.drupal.org/documentation/releases/types

Ie, releases.

But I don't want to argue about silly semantics. There's no module, and no functionality. That's the answer to my question.

Like in my OP, I already found & read the big_pipe info that's there.

Sure, it's on by default. But if there's a couple of things I learned in my week or so of Drupal is, lots of modules don't worry much about their interactions with others, and when it comes to caching there's lots more moving parts that there are good documentation posts.

Anyway, no ESI. Which is a big problem that I need to figure out.

VM’s picture

baena’s picture

Since the ESI module for Drupal8 doesn't exist I 've been looking for any alternative solutions. Assuming that no ESI == no auth user caching.

But putting together bits and pieces that doesn't seem to be exactly true.

If you read the following clips

partial page caching

and/or

dynamic page cache module

and/or

Cache Contexts a simple ESI module

and/or

BigPipe

all seem to "do" authenticated user page caching

http://buytaert.net/why-the-big-architectural-changes-in-drupal-8

We're still working on making partial page caching practical. Mostly that comes down to more controlled channels for how blocks get rendered, including their metadata, and eliminating global state. Once that's done, we can do for-reals block caching that is actually usable. Even without leveraging ESI, we should be able to do better in-process caching than we could in Drupal 7. That in turn should make authenticated page rendering much faster. Again, though, this is still a work in progress that could use help, especially from people familiar with the problem space.

http://www.qed42.com/blog/bigpipe-drupal8

Now, if we were talking about Drupal 7, the complete page would be cacheable for anonymous user. But, there would be no caching for authenticated user, even though there are parts of the page that can be cached. For authenticated requests in Drupal 7, one could use the modules like authcache to have better performance.

However in Drupal 8 core, this is doable using the dynamic page cache module in the core. Drupal 8 core has support for cacheability metadata, that aids dynamic page cache module. To enable the module, go to admin/modules -> select dynamic page cache & save the configuration.

https://events.drupal.org/neworleans2016/sessions/fastly-and-drupal8

Drupal 8 Cache Contexts make authenticated user caching possible

And thanks to Drupal 8 Cache Contexts a simple ESI module, can make it possible to cache authenticated user content at the edge without almost any configuration needed (just a custom VCL). It transparently just works.

https://www.finalist.nl/techblog/2016/05/performance-boosting-in-drupal-8-just-got-better/

For websites with logged in users BigPipe can be a real boost in performance. Standard Drupal cache doesn’t work out of the box for logged in users. For Drupal 7 you had the Authenticated User Page Caching (Authcache) module (which had some disadvantages), but for Drupal 8 there was nothing. Until Drupal 8.1!

With BigPipe Drupal is now able to cache certain parts of the page (the skeleton which I mentioned above) and to multithread some other parts. And these parts are cacheable by themselves.

So, is ESI even needed anymore to do Auth'd User caching in Drupal8?

If not, which one of those ^ is the right solution?