Skip to content
This repository has been archived by the owner on Aug 8, 2024. It is now read-only.

Add support for BigPipe #146

Open
Soundvessel opened this issue Jun 10, 2016 · 14 comments
Open

Add support for BigPipe #146

Soundvessel opened this issue Jun 10, 2016 · 14 comments

Comments

@Soundvessel
Copy link

BigPipe was added to Drupal 8.1 core but is currently not supported by Pantheon.

Varnish rules notes from Power Users topic.

@greg-1-anderson
Copy link
Member

greg-1-anderson commented Jun 10, 2016

Drops-8 and Pantheon Varnish are compatible with BigPipe. Pantheon's edge routing layer is still buffering output, though. This issue is being tracked internally.

@damienmckenna
Copy link

It has been six months since the last update, any news?

@markpdeeson
Copy link

Any update in the last 9 months?

@greg-1-anderson
Copy link
Member

greg-1-anderson commented Apr 6, 2017

BigPipe is officially stable in Drupal 8.3.0. We also have the new Sessionless BigPipe module, which also requires unbuffered output in our edge routing layer to work.

These modules are important & should be supported on Pantheon. We do not have an announced support date for this work yet, though.

@davidstrauss
Copy link
Member

While Drupal sees major gains from the current implementations of BigPipe, they're actually kind of mediocre compared to what's possible, and that's where my mind is at.

It also won't be very long before HTTP/2 is available platform-wide (cough already running on some sites cough and available to all others if you throw Cloudflare or Fastly in front), which actually does what BigPipe wants (server push of additional assets) in a semantic way rather than a clever abuse of HTTP/1.1 chunking and streaming.

This approach should win against HTTP/1.1 BigPipe streaming several times over:

  • HTTP/2 allows each asset to have its own cache control at the edge (Varnish), rather than having Drupal stream things out of its object cache.
  • These additional assets can come from a CDN POP near the user rather than from the origin.
  • Even if you use ESI to stream the assets out of something like Varnish (and avoid Drupal having to stream them), ESI must streamed them sequentially over one connection. So, any asset that misses the cache will delay loading of later ones. HTTP/2 push happens in parallel, so assets become visible without any cache miss bottlenecking the others. Moreover, the browser can actually cache these assets on the client side, something opaque with ESI.
  • Other assets, like CSS, JS, and images, can also be pushed to the client before the browser even knows it need them. This isn't a BigPipe thing, but it's more commonly the bottleneck on initial page loads than Drupal's page skeleton delivery (though accelerating the skeleton page delivery does reduce the time before the browser knows it needs to request those assets with HTTP/1.1).

In short, BigPipe with HTTP/1.1 streaming has put a lot of good infrastructure into Drupal's core, but it's a mediocre way to optimize, whether your goal is (1) time to basic page usability, (2) time to most content being available, or (3) time to pages rendering on further interaction with the site.

@joshkoenig
Copy link
Member

We should think about how to "do it right" for logged-in users, which is the big benefit of BigPipe. As it stands, our Varnish implementation gives a big ol "nope" when there's an active session.

@chriscalip
Copy link

chriscalip commented May 23, 2017

One good advantage of bigpipe over http2 is current browser/older browser support.
https://caniuse.com/#search=http2
I can see why pantheon would like to support http2 instead of bigpipe only this decision would de-facto not support a chunk of internet users.

USA numbers as of May 31, 2007
84.5% fully supported + 10.89% partially supported. (source: http://caniuse.com/) and probably the standard deviation of +/- 5% of any survey based data gathering.

@amklose
Copy link

amklose commented Mar 22, 2018

Now that BigPipe is enabled by default on Drupal 8.5, is that something we should manually disable on Pantheon sites, or can it remain enabled without causing problems?

@greg-1-anderson
Copy link
Member

I disable BigPipe when running the Behat tests on the various drops-8 modules, as BigPipe interferes with Behat's ability to follow the redirects that happen on progress bar pages.

For other uses, leaving BigPipe on should not cause any adverse effects. However, since it will not provide any benefit either, you might as well uninstall the module on your Pantheon sites.

allenfear added a commit to pantheon-systems/documentation that referenced this issue Apr 22, 2018
jacine added a commit to SFDigitalServices/sfgov that referenced this issue Sep 11, 2020
aekong added a commit to SFDigitalServices/sfgov that referenced this issue Sep 22, 2020
* sg-1172 - update Meetings views

* sg-1172 - update node meeting header

* [SG-1203] Track Back to top button in Amplitude.

* [sg-1153] Fix conflict-related issues. (#632)

Caused by #592 and #606 working on the same filters.

* SG-1070 Search translation (#536)

* sg-1070 Allow translation of all pages, not just nodes and views.

* sg-1070 Search block submit and autocomplete use current page language.

* sg-1070 Do not translate certain strings from the search results.

* sg-1070 Fix route parameters bug.

* sg-1070 Add query params to translations redirect.

Co-authored-by: Anthony Kong <[email protected]>

* sg-1203 - put back to top link in twig so amplitude js registers the link for events

* sg-1001 - update sso url (#635)

* Deploy issues (#637)

* callout component

* add include paths for sass imports

* remove sf design system as drupal library

* clean up import of older pattern lab, explicit imports of sf-design-system

* compiled css

* lower case package name

* [SG-1134] Fix People section has pixellated photos. (#627)

* Deploy issues (#640)

* callout component

* add include paths for sass imports

* remove sf design system as drupal library

* clean up import of older pattern lab, explicit imports of sf-design-system

* compiled css

* lower case package name

* more callout issues

* remove h1 tag for header with banner image to accommodate form confirmation page

* reorder sf-design-system imports

* fix alert link color

* Upgrade formio-sfds to 6.1.0

* Upgrade formiojs to 4.11.2, formio-sfds to 6.2.0

* sg-1205 - gTranslate label should be visually hidden rather than display none.

* sg-1205 - Fix issue with malformed attributes.

* sg-1205 -Ttechnically should be novalidate=“novalidate”

* sg-1025 - aria-expanded is required for combobox/listbox implementation.

* sg-1205: Attach a form_id to all form elements so they can be targeted.

* sg-1205: Fix broken aria-describedby reference…

due to core bug: https://www.drupal.org/node/2839344

* sg-1205 - Fix heading level for meeting node titles…

h1. Past meetings
h2. Month
h3. Date
h4. Meeting node title

* [1198] Documents without attachments (#638)

* [1198] Documents without attachments

* [1198] fix error on empty attachment

* [SG-1198] update text style and doc spacing

* [SG-1198] update node.inc with link documents

* use formio-sfds release candidate 6.2.0-rc.aa6ad2f

* [SG-1204] add text item to agenda items

* [SG-1206] meeting archive committes

* Remove white background from services <details>

* bring back <details> background, add border-radius

* Update _details.scss

* promote <details> border-radius to element selector

* bring back the white <summary> background

* SG-1215 - Run the theme build to capture @shawnbot’s fix.

* [SG-1150] Add image attribution fields to image entity.

* [SG-1150] Make sure media edit form shows list of licenses.

* [SG-1150] Move image attribute logic into separate module.

* [SG-1150] Enable custom image attributes module.

* Remove incorrectly added module.

* [SG-1150] Hide unused fields from image form.

* [SG-1150] Hide translation options.

* SG-1209 - Remove focus upon expanding filters.

* Use of button + ::before inherits unwanted styles and…

@exends m13 field type from sf-design-system, which broke these styles. Luckily we don’t need it.

* Udate NPM dependencies.

* [SG-1204] update text-format SF restrict html

* add scripts/create-deployment, use in circleci NOTIFY

* SG-1184 - componentize people section a bit, remove people section specific styles from public body css

* SG-1184 - people section exceptions for front page

* SG-1184 - compiled css

* [SG-1081] Remove button patch and styles.

* SG-1184 - light slate person titles

* move create-deployment to scripts/github

* move environment bits into create-deployment script

* nix unused NOTIFY env var; call create-deployment

* rename create-deployment to update-deploy-status, etc.

* checkout before running update-deploy-status

* use oauth token; output deployment JSON

* use the same composer image as the build job

* include defaults in update-deploy-status job

* ok, use $GITHUB_TOKEN

* better debugging, fix typo

* fix typo, better debugging

* wait for build_deploy_and_test before update_deploy_status

* add required_contexts to deployment payload

* fix required_contexts, better logging

* set a global DEPLOY_URL env var, use it

* export DEPLOY_URL via $BASH_ENV

* nix DEPLOY_URL debug step

* nix transient_environment: true from test deployment payload

* sg-1207 - Remove arrows from prev/next pager text. (#655)

* use MULTIDEV_SITE_URL instead of DEPLOY_URL

I dug this up in the pantheon build tools set-environment script that
we're calling:

https://github.com/pantheon-systems/docker-build-tools-ci/blob/6.x/scripts/set-environment#L103

* better json formatting

* delete scripts/gitlab/add-commit-comment

* add transient_environment + environment_url to deployment payload

* use printf to avoid quote escape hell

* sg-1210 - Install pantheon_advanced_page_cache module. (#656)

* use $TERMINUS_ENV for the deployment environment

* sg-1188 - Fix hover state of footer links. (#654)

* [SG-1082] Reinstall Media module Views configuration.

* [SG-1082] Uninstall BigPipe based on guidance from Pantheon, and documented known issues with modules on their platform.

- guidance: pantheon-systems/drops-8#146
- known issues: https://pantheon.io/docs/modules-known-issues#bigpipe

* Gi suite screenshots (#664)

* echo suite result id for testing

* post slack message when suite completes

* also send individual test results to slack

* pin [email protected]

* Updates - D8 core 8.9.6 (#670)

Co-authored-by: Gabe <[email protected]>

* Use github action to trigger circleci build for main branch (#674)

* Create trigger-circleci-main.yml

* test if develop branch builds

* test push this branch

* set push and build branches to main

Co-authored-by: Gabe <[email protected]>
Co-authored-by: Minnur Yunusov <[email protected]>
Co-authored-by: Jacine Luisi <[email protected]>
Co-authored-by: Arlina Espinoza Rhoton <[email protected]>
Co-authored-by: Shawn Allen <[email protected]>
Co-authored-by: Carlos Espinoza <[email protected]>
Co-authored-by: Gabe <[email protected]>
aekong added a commit to SFDigitalServices/sfgov that referenced this issue Sep 22, 2020
* sg-1172 - update Meetings views

* sg-1172 - update node meeting header

* [SG-1203] Track Back to top button in Amplitude.

* [sg-1153] Fix conflict-related issues. (#632)

Caused by #592 and #606 working on the same filters.

* SG-1070 Search translation (#536)

* sg-1070 Allow translation of all pages, not just nodes and views.

* sg-1070 Search block submit and autocomplete use current page language.

* sg-1070 Do not translate certain strings from the search results.

* sg-1070 Fix route parameters bug.

* sg-1070 Add query params to translations redirect.

Co-authored-by: Anthony Kong <[email protected]>

* sg-1203 - put back to top link in twig so amplitude js registers the link for events

* sg-1001 - update sso url (#635)

* Deploy issues (#637)

* callout component

* add include paths for sass imports

* remove sf design system as drupal library

* clean up import of older pattern lab, explicit imports of sf-design-system

* compiled css

* lower case package name

* [SG-1134] Fix People section has pixellated photos. (#627)

* Deploy issues (#640)

* callout component

* add include paths for sass imports

* remove sf design system as drupal library

* clean up import of older pattern lab, explicit imports of sf-design-system

* compiled css

* lower case package name

* more callout issues

* remove h1 tag for header with banner image to accommodate form confirmation page

* reorder sf-design-system imports

* fix alert link color

* Upgrade formio-sfds to 6.1.0

* Upgrade formiojs to 4.11.2, formio-sfds to 6.2.0

* sg-1205 - gTranslate label should be visually hidden rather than display none.

* sg-1205 - Fix issue with malformed attributes.

* sg-1205 -Ttechnically should be novalidate=“novalidate”

* sg-1025 - aria-expanded is required for combobox/listbox implementation.

* sg-1205: Attach a form_id to all form elements so they can be targeted.

* sg-1205: Fix broken aria-describedby reference…

due to core bug: https://www.drupal.org/node/2839344

* sg-1205 - Fix heading level for meeting node titles…

h1. Past meetings
h2. Month
h3. Date
h4. Meeting node title

* [1198] Documents without attachments (#638)

* [1198] Documents without attachments

* [1198] fix error on empty attachment

* [SG-1198] update text style and doc spacing

* [SG-1198] update node.inc with link documents

* use formio-sfds release candidate 6.2.0-rc.aa6ad2f

* [SG-1204] add text item to agenda items

* [SG-1206] meeting archive committes

* Remove white background from services <details>

* bring back <details> background, add border-radius

* Update _details.scss

* promote <details> border-radius to element selector

* bring back the white <summary> background

* SG-1215 - Run the theme build to capture @shawnbot’s fix.

* [SG-1150] Add image attribution fields to image entity.

* [SG-1150] Make sure media edit form shows list of licenses.

* [SG-1150] Move image attribute logic into separate module.

* [SG-1150] Enable custom image attributes module.

* Remove incorrectly added module.

* [SG-1150] Hide unused fields from image form.

* [SG-1150] Hide translation options.

* SG-1209 - Remove focus upon expanding filters.

* Use of button + ::before inherits unwanted styles and…

@exends m13 field type from sf-design-system, which broke these styles. Luckily we don’t need it.

* Udate NPM dependencies.

* [SG-1204] update text-format SF restrict html

* add scripts/create-deployment, use in circleci NOTIFY

* SG-1184 - componentize people section a bit, remove people section specific styles from public body css

* SG-1184 - people section exceptions for front page

* SG-1184 - compiled css

* [SG-1081] Remove button patch and styles.

* SG-1184 - light slate person titles

* move create-deployment to scripts/github

* move environment bits into create-deployment script

* nix unused NOTIFY env var; call create-deployment

* rename create-deployment to update-deploy-status, etc.

* checkout before running update-deploy-status

* use oauth token; output deployment JSON

* use the same composer image as the build job

* include defaults in update-deploy-status job

* ok, use $GITHUB_TOKEN

* better debugging, fix typo

* fix typo, better debugging

* wait for build_deploy_and_test before update_deploy_status

* add required_contexts to deployment payload

* fix required_contexts, better logging

* set a global DEPLOY_URL env var, use it

* export DEPLOY_URL via $BASH_ENV

* nix DEPLOY_URL debug step

* nix transient_environment: true from test deployment payload

* sg-1207 - Remove arrows from prev/next pager text. (#655)

* use MULTIDEV_SITE_URL instead of DEPLOY_URL

I dug this up in the pantheon build tools set-environment script that
we're calling:

https://github.com/pantheon-systems/docker-build-tools-ci/blob/6.x/scripts/set-environment#L103

* better json formatting

* delete scripts/gitlab/add-commit-comment

* add transient_environment + environment_url to deployment payload

* use printf to avoid quote escape hell

* sg-1210 - Install pantheon_advanced_page_cache module. (#656)

* use $TERMINUS_ENV for the deployment environment

* sg-1188 - Fix hover state of footer links. (#654)

* [SG-1082] Reinstall Media module Views configuration.

* [SG-1082] Uninstall BigPipe based on guidance from Pantheon, and documented known issues with modules on their platform.

- guidance: pantheon-systems/drops-8#146
- known issues: https://pantheon.io/docs/modules-known-issues#bigpipe

* Gi suite screenshots (#664)

* echo suite result id for testing

* post slack message when suite completes

* also send individual test results to slack

* pin [email protected]

* Updates - D8 core 8.9.6 (#670)

Co-authored-by: Gabe <[email protected]>

* Use github action to trigger circleci build for main branch (#674)

* Create trigger-circleci-main.yml

* test if develop branch builds

* test push this branch

* set push and build branches to main

* gh action and ghost inspector suite results (#676)

* add content type header for curl post

* check for failures first for ghost inspector suite results

Co-authored-by: Gabe <[email protected]>
Co-authored-by: Minnur Yunusov <[email protected]>
Co-authored-by: Jacine Luisi <[email protected]>
Co-authored-by: Arlina Espinoza Rhoton <[email protected]>
Co-authored-by: Shawn Allen <[email protected]>
Co-authored-by: Carlos Espinoza <[email protected]>
Co-authored-by: Gabe <[email protected]>
aekong added a commit to SFDigitalServices/sfgov that referenced this issue Oct 14, 2020
* sg-1172 - update Meetings views

* sg-1172 - update node meeting header

* [SG-1203] Track Back to top button in Amplitude.

* [sg-1153] Fix conflict-related issues. (#632)

Caused by #592 and #606 working on the same filters.

* SG-1070 Search translation (#536)

* sg-1070 Allow translation of all pages, not just nodes and views.

* sg-1070 Search block submit and autocomplete use current page language.

* sg-1070 Do not translate certain strings from the search results.

* sg-1070 Fix route parameters bug.

* sg-1070 Add query params to translations redirect.

Co-authored-by: Anthony Kong <[email protected]>

* sg-1203 - put back to top link in twig so amplitude js registers the link for events

* sg-1001 - update sso url (#635)

* Deploy issues (#637)

* callout component

* add include paths for sass imports

* remove sf design system as drupal library

* clean up import of older pattern lab, explicit imports of sf-design-system

* compiled css

* lower case package name

* [SG-1134] Fix People section has pixellated photos. (#627)

* Deploy issues (#640)

* callout component

* add include paths for sass imports

* remove sf design system as drupal library

* clean up import of older pattern lab, explicit imports of sf-design-system

* compiled css

* lower case package name

* more callout issues

* remove h1 tag for header with banner image to accommodate form confirmation page

* reorder sf-design-system imports

* fix alert link color

* Upgrade formio-sfds to 6.1.0

* Upgrade formiojs to 4.11.2, formio-sfds to 6.2.0

* sg-1205 - gTranslate label should be visually hidden rather than display none.

* sg-1205 - Fix issue with malformed attributes.

* sg-1205 -Ttechnically should be novalidate=“novalidate”

* sg-1025 - aria-expanded is required for combobox/listbox implementation.

* sg-1205: Attach a form_id to all form elements so they can be targeted.

* sg-1205: Fix broken aria-describedby reference…

due to core bug: https://www.drupal.org/node/2839344

* sg-1205 - Fix heading level for meeting node titles…

h1. Past meetings
h2. Month
h3. Date
h4. Meeting node title

* [1198] Documents without attachments (#638)

* [1198] Documents without attachments

* [1198] fix error on empty attachment

* [SG-1198] update text style and doc spacing

* [SG-1198] update node.inc with link documents

* use formio-sfds release candidate 6.2.0-rc.aa6ad2f

* [SG-1204] add text item to agenda items

* SG-1191 - move referenced pattern lab templates into theme

* SG-1191 - update css after moving pattern lab components around

* SG-1191 - remove pattern lab from libraries

* SG-1191 - compiled css

* SG-1191 - remove pattern lab from composer, update lock

* SG-1191 - fix broken accordion details, section spacing, tabbed nav, and status messages

* SG-1191 - compiled css

* [SG-1206] meeting archive committes

* src/

SG-1191 - move sf-design-system into theme

* SG-1191 - compiled css

* SG-1191 - remove sf-design-system from composer

* Remove white background from services <details>

* bring back <details> background, add border-radius

* Update _details.scss

* promote <details> border-radius to element selector

* bring back the white <summary> background

* SG-1215 - Run the theme build to capture @shawnbot’s fix.

* [SG-1150] Add image attribution fields to image entity.

* [SG-1150] Make sure media edit form shows list of licenses.

* [SG-1150] Move image attribute logic into separate module.

* [SG-1150] Enable custom image attributes module.

* SG-1191 - trim down form field styles

* Remove incorrectly added module.

* [SG-1150] Hide unused fields from image form.

* [SG-1150] Hide translation options.

* SG-1209 - Remove focus upon expanding filters.

* Use of button + ::before inherits unwanted styles and…

@exends m13 field type from sf-design-system, which broke these styles. Luckily we don’t need it.

* Udate NPM dependencies.

* [SG-1204] update text-format SF restrict html

* add scripts/create-deployment, use in circleci NOTIFY

* SG-1184 - componentize people section a bit, remove people section specific styles from public body css

* SG-1184 - people section exceptions for front page

* SG-1184 - compiled css

* [SG-1081] Remove button patch and styles.

* SG-1184 - light slate person titles

* move create-deployment to scripts/github

* move environment bits into create-deployment script

* nix unused NOTIFY env var; call create-deployment

* SG-1191 - defaut image style props

* SG-1191 - fix pagination display

* SG-1191 - unnecessary base import

* Sg-1191 - search button text color

* rename create-deployment to update-deploy-status, etc.

* checkout before running update-deploy-status

* use oauth token; output deployment JSON

* use the same composer image as the build job

* include defaults in update-deploy-status job

* ok, use $GITHUB_TOKEN

* better debugging, fix typo

* fix typo, better debugging

* wait for build_deploy_and_test before update_deploy_status

* SG-1191 - update document icon

* add required_contexts to deployment payload

* SG-1191 - fix meeting heading

* SG-1191 - compiled css

* fix required_contexts, better logging

* set a global DEPLOY_URL env var, use it

* export DEPLOY_URL via $BASH_ENV

* nix DEPLOY_URL debug step

* nix transient_environment: true from test deployment payload

* sg-1207 - Remove arrows from prev/next pager text. (#655)

* use MULTIDEV_SITE_URL instead of DEPLOY_URL

I dug this up in the pantheon build tools set-environment script that
we're calling:

https://github.com/pantheon-systems/docker-build-tools-ci/blob/6.x/scripts/set-environment#L103

* better json formatting

* delete scripts/gitlab/add-commit-comment

* add transient_environment + environment_url to deployment payload

* use printf to avoid quote escape hell

* sg-1210 - Install pantheon_advanced_page_cache module. (#656)

* use $TERMINUS_ENV for the deployment environment

* sg-1188 - Fix hover state of footer links. (#654)

* Create lighthouse.yml

* Create .lighthouserc.js

* [SG-1082] Reinstall Media module Views configuration.

* [SG-1082] Uninstall BigPipe based on guidance from Pantheon, and documented known issues with modules on their platform.

- guidance: pantheon-systems/drops-8#146
- known issues: https://pantheon.io/docs/modules-known-issues#bigpipe

* adjust wait-for-deployment timings

* SG-1191 - title-2 for resource collection heading

* SG-1191 - search and header css fixes

* SG-1191 - compiled css

* SG-1191 - focus outline for things

* Gi suite screenshots (#664)

* echo suite result id for testing

* post slack message when suite completes

* also send individual test results to slack

* pin [email protected]

* SG-1191 - bring back form stuff

* SG-1191 - header search icon getting cut off

* SG-1191 - compiled css

* SG-1191 - fix search box padding on mobile

* Updates - D8 core 8.9.6 (#670)

Co-authored-by: Gabe <[email protected]>

* SG-1191 - fix search icon padding

* wait 60s between deployment checks

* trigger LHCI on deployment_status

* Use github action to trigger circleci build for main branch (#674)

* Create trigger-circleci-main.yml

* test if develop branch builds

* test push this branch

* set push and build branches to main

* [SG-1223] Fix link color in Feedback form success message.

* [SG-1223] Make Form.io aware of whether the page is a. “Form page” or not.

* [SG-1223] Set a min-height to account for compact Feedback form…

which only shows “Report something wrong with this page” by default.

* [SG-1223]: Fix form page spacing on small screens.

* gh action and ghost inspector suite results (#676)

* add content type header for curl post

* check for failures first for ghost inspector suite results

* use git-the-branch@v1

* [SG-1138] News card displays for topics and departments should use card_compact which does not render an image.

* [SG-1138] Refactor and document “News card” …

- So there is no longer homepage-specific code, with a different layout technique.
- Use the proper view mode when there is an image (homepage) vs not (everywhere else.
- All the news card CSS lives in one place.
- Change the breakpoint for when the image appears, as there is never enough room for it to look good until $narrow-screen.

* Add composer manifest. (#680)

* update cookies lifespan to 90 days (#625)

* [SG-1151] Display image attributes. (#651)

* [SG-1151] Display image attribution on front-end.

* [SG-1151] Remove VariantCache from extensions list.

* [SG-1151] Refine template.

* [SG-1151] Hide unused fields from media image form.

* [SG-1151] Hide unused fields from media image form.

* SG-787 - Hide title for mailing addresses (#669)

* sg-787 - Hide title for mailing addresses

* sg-787 - Comment update to trigger PR build

* Revert "sg-787 - Comment update to trigger PR build"

This reverts commit 1d353db.

Co-authored-by: Gabe <[email protected]>

* [SG-1157] Update remaining Drupal modules. (#628)

* [SG-1157] Update remaining Drupal modules.

* Install security update for Group module.

* Upgrade Drupal core to 8.9.3. Group module security update.

* Capture config changes.

* Refine circles deployment script.

* [SG-1157] Fix duplication issue.

* Sg-1157 - conflicts

Co-authored-by: Anthony Kong <[email protected]>

* sg-1027 - Update mailing address template for transactions (#667)

Co-authored-by: Gabe <[email protected]>

* SG-1181 - Meetings date format for card display (#679)

Co-authored-by: Gabe <[email protected]>

* [SG-1194] Add a new theme region “top”.

* [SG-1194] Place gtranslate block in top.

* [SG-1194] Patch gtranslate module to add a new type: links

* [SG-1194] Update configuration to use new ‘links’ type.

* [SG-1194] Remove label.

* [SG-1194] Adapt code to use links instead of select.

* [SG-1194] New translation link styles.

* [SG-1194] Override Chinese language name from 繁體中文 to 中文.

* [SG-1194] Make Chinese link always use Noto Sans.

* [SG-1194] Add data-gtranslate back.

* [SG-1194] Cleanup + tweaks for Chinese.

* [SG-1194] Fix order/indentation.

* [SG-1194] Fix order/indentation (again).

* [SG-1194] Add href to links, and set active class at that point.

* [SG-1194]  Change the sort order to: English, Español, 中文, Filipino.

* [SG-1194] Adjust the placement of the Chinese link.

* [SG-1194] Adjust alignment further on iOS.

* [SG-1194] Override cursor and remove underline for active language link.

* Run composer update lock after #628 merge.

* Commit outstanding configuration.

* Upgrade [email protected] (#695)

See SFDigitalServices/formio-sfds#109 for more info

* SG-1191 - lost card and container stuff in merge

* SG-1191 - fix headings on meetings (and probably other places)

* SG-1191 - repetitive base font size

* SG-1191 - update composer lock

Co-authored-by: Gabe <[email protected]>
Co-authored-by: Minnur Yunusov <[email protected]>
Co-authored-by: Jacine Luisi <[email protected]>
Co-authored-by: Arlina Espinoza Rhoton <[email protected]>
Co-authored-by: Shawn Allen <[email protected]>
Co-authored-by: Carlos Espinoza <[email protected]>
Co-authored-by: Gabe <[email protected]>
Co-authored-by: henry jiang <[email protected]>
@wimleers
Copy link

@davidstrauss In your 2017 comment you wrote:

It also won't be very long before HTTP/2 is available platform-wide (cough already running on some sites cough and available to all others if you throw Cloudflare or Fastly in front), which actually does what BigPipe wants (server push of additional assets) in a semantic way rather than a clever abuse of HTTP/1.1 chunking and streaming.

This is inaccurate.

BigPipe in Drupal is not designed for making assets load faster.

It's designed to allow Drupal to serve already-rendered content immediately to the browser, and while the browser already renders that (and fetches CSS, JS, images …), Drupal can simultaneously continue rendering of HTML (and doing whatever computing/data fetching necessary for it) on the server. That is why it uses chunked transfers: to send HTML content as fast to the client as possible, not assets.

(Also, by now, HTTP/2 Server Push is effectively dead, because it didn't actually end up working in the real world. But just like you, I was hoping that it would make all the difference for assets, and we'd have been able to remove complex bundling/aggregation logic in Drupal! Chrome removed it in 2020.)


Fast forward to 2023, and PHP 8.1 is required by Drupal 10 and comes with Fibers. An issue to update BigPipe in Drupal core to use Fibers is RTBC.

This will mean that rather than rendering that placeholdered content in sequence, it can be rendered in parallel on the server (well, they're still rendered sequentially but the I/O blocking that rendering can happen in parallel).


Time to reconsider? 😊

@catch56
Copy link

catch56 commented Aug 25, 2023

@davidstrauss

rather than having Drupal stream things out of its object cache.
These additional assets can come from a CDN POP near the user rather than from the origin.

Just to follow-up on Wim's comment. This is just not how Drupal core works at all. Drupal's assets are always served from the filesystem, they're never streamed from the object cache. BigPipe slightly modifies when particular script or stylesheet link tags might get rendered but it doesn't fundamentally change core's asset rendering logic at all.

The Fibers patch, once we've got some extra pieces in place, will mean mean that even with edge cache buffering, there is likely to still be some benefit to sites from running the BigPipe module.

For an over-simplified example, if you have four blocks that each do something (http request, database query) that can be handled async and take 3 seconds each, instead of 12 seconds to get through each sequentially, could potentially be done in parallel in 3 seconds. That would allow the page to be served 9 seconds faster even with BigPipe's streaming logic being hamstrung by Pantheon. Actual BigPipe would take the ttfb down closer to milliseconds with or without the Fibers patch, but it makes pantheon-systems/documentation#3596 even less correct once we get to Drupal 10.2 or 10.3 even without supporting it properly. edited to add: it's possible we'll eventually support Fibers in the non-bigpipe rendering implementations too, but for now that was the obvious place to start.

@MaxwellKeeble
Copy link

We should think about how to "do it right" for logged-in users, which is the big benefit of BigPipe.

This is key for us. Our move to Pantheon has noticeably slowed down the perceived speed of loading of pages for authenticated users - I think because we no longer get the advantage of BigPipe for them. (Noticeably in the sense that users have complained...!). It would be great if there was a solution for logged in users that leveraged all this existing cleverness to lower TTFB and FCP.

@stephencapellic
Copy link

We want to be able to defer the loading of slow content blocks while maintaining page cache.

@catch56
Copy link

catch56 commented May 25, 2024

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests