PHPackages                             sitewards/bigpipe - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. sitewards/bigpipe

ActiveMagento-module

sitewards/bigpipe
=================

Implements a BigPipe option to Magento, so a block can be marked as BigPipe an will be rendered after the first flush appeared. Facebook uses that technique to avoid a blocking of the loading process by some slower components.

3375[2 issues](https://github.com/sitewards/BigPipe/issues)PHP

Since Oct 16Pushed 12y ago37 watchersCompare

[ Source](https://github.com/sitewards/BigPipe)[ Packagist](https://packagist.org/packages/sitewards/bigpipe)[ RSS](/packages/sitewards-bigpipe/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Sitewards BigPipe
=================

[](#sitewards-bigpipe)

Implements a BigPipe option to Magento, so a block can be marked as BigPipe an will be rendered after the first flush appeared. Facebook uses that technique to avoid a blocking of the loading process by some slower components.

There is also a really great [explanation by Facebook](https://www.facebook.com/note.php?note_id=389414033919).

Contact us for a demo in your shop.

Manual
------

[](#manual)

Simply define a bigpipe attribute on the block in your layout.xml. That's all!

Example to move the loading of breadcrumb to the end of your website, while most of the content is already delivered:

```

```

The Loading block collects all called method and set data and transfers it later to the real target block, so even an -&gt;addCrumb call in that example is executed on the final block, too.

You have to disable gzip. [StackOverflow-Thread](http://stackoverflow.com/questions/4870697/php-flush-that-works-even-in-nginx) for details. Also check your system.log, because you'll get a log message when zlib.output\_compression is enabled.

Define order of blocks
----------------------

[](#define-order-of-blocks)

It's possible to define an order which bigpipe block should be rendered first:

```

```

In that case foo will be rendered, flushed and after that breadcrumb will be rendered and flushed

Define buffer size
------------------

[](#define-buffer-size)

Depending on your server configuration you can configure the module to output whitespaces, until buffer size limit is reached. If the block which should be outputted is smaller than the buffer size you'll have a delay in the flush and have to wait until more blocks are rendered or script is ended to output the block. Go to "System/Configuration/Sitewards BigPipe". Default: 4096

Call a javascript callback on each block load
---------------------------------------------

[](#call-a-javascript-callback-on-each-block-load)

To execute some javascript when a block was loaded we implemented some kind of basic observer. Just implement a function with the name bigpipeObserver, that will be triggered after the block was loaded to his desired target location.

```
/**
 * example for observer
 * @param element
 */
function bigpipeObserver(element) {
    alert(element.innerHTML);
}

```

Define custom loading file to be displayed
------------------------------------------

[](#define-custom-loading-file-to-be-displayed)

It's also possible to define your own loading template files. You set them in the layout.xml, so the loading-dialog can be individually styled:

```

    sitewards/myLoadingFile.phtml

```

There are no requirements what has to be inside that template file. All the magic is done doing a wrapper block who is wrapped around your template file. Standard template file just looks like this:

```
/* template/sitewards/loading.phtml */

```

Ideas
-----

[](#ideas)

- Mashup with [Houston](https://github.com/airbone42/Houston) or any other multi-threading framework to parallelize rendering of blocks
- remove core\_layout rewrite
- add an optional flush after head-tag so css and js can be loaded while server is still processing the site (after first research we decided this will be a new module and is not related to BigPipe)
- add feature for a big pipe block in a big pipe, which will be rendered after the parent was rendered

Contact
-------

[](#contact)

License: OSL 3.0

Contribution is appreciated, even new issues!

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1398594?v=4)[Tobias Zander](/maintainers/airbone42)[@airbone42](https://github.com/airbone42)

### Embed Badge

![Health badge](/badges/sitewards-bigpipe/health.svg)

```
[![Health](https://phpackages.com/badges/sitewards-bigpipe/health.svg)](https://phpackages.com/packages/sitewards-bigpipe)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
