Skip to content

Instantly share code, notes, and snippets.

@jgrahamc

jgrahamc/index.php

Last active Jun 18, 2020
Embed
What would you like to do?
Demonstrating how to use Link headers to make CloudFlare push assets
<?php
function ccbysa($imagehtml, $sourceuri, $owneruri, $ownername) {
return <<<HTML
{$imagehtml}
<br/>
<small><a href="https://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA</a>
<a href="{$sourceuri}">image</a> by <a href="{$owneruri}">{$ownername}</a>
<br/>
HTML;
}
function ccbynd($imagehtml, $sourceuri, $owneruri, $ownername) {
return <<<HTML
{$imagehtml}
<br/>
<small><a href="https://creativecommons.org/licenses/by-nd/2.0/">CC BY-ND</a>
<a href="{$sourceuri}">image</a> by <a href="{$owneruri}">{$ownername}</a>
<br/>
HTML;
}
function pushImage($uri) {
header("Link: <{$uri}>; rel=preload; as=image", false);
return <<<HTML
<img src="{$uri}">
HTML;
}
$image1 = pushImage("/images/drucken.jpg");
$image2 = pushImage("/images/empire.jpg");
?>
<html>
<head><title>PHP Server Push</title></head>
<body>
<h1>PHP Server Push</h1>
<?php
echo ccbysa($image1, "https://bit.ly/1Wu5bYx",
"https://www.flickr.com/photos/hiperactivo/", "Javier Candeira");
echo ccbynd($image2, "https://bit.ly/24PHue3",
"https://www.flickr.com/photos/bobsfever/", "Robert McGoldrick");
?>
</body>
</html>
@holtkamp

This comment has been minimized.

Copy link

@holtkamp holtkamp commented May 13, 2016

Nice post on https://blog.cloudflare.com/using-http-2-server-push-with-php/, but is this example hosted somewhere so we can have a look of the result? Could not find the link in the blog post...

@gbowman2013

This comment has been minimized.

Copy link

@gbowman2013 gbowman2013 commented Nov 18, 2016

See https://blog.cloudflare.com/using-http-2-server-push-with-php/ for hosted code and discussion of this topic. The code result is shown at the top of the post.

@developernaren

This comment has been minimized.

Copy link

@developernaren developernaren commented Jan 5, 2017

This might be a stupid question. I copied and pasted the whole code of this in my local machine file but I cannot see anything in the screen. How is this supposed to work? Do I need to enable something or have some settings in my local machine?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.