Skip to content

Instantly share code, notes, and snippets.

View ThijsFeryn's full-sized avatar

Thijs Feryn ThijsFeryn

View GitHub Profile
@ThijsFeryn
ThijsFeryn / EsiServiceProvider.php
Last active May 9, 2022 12:51
The various Laravel snippets I used in my Laracon EU 2022 Amsterdam presentation on how to improve the cacheability of Laravel projects. I'd like to see this end up in a larger caching or edge package and I'd like some of the code to be optimized.
<?php
//An ESI service provider that defines a custom @esi(/header) directive that can be used to render ESI tags
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Blade;
class EsiServiceProvider extends ServiceProvider
{
/**
@ThijsFeryn
ThijsFeryn / redirect.vcl
Created July 29, 2021 09:05
Redirect to the www hostname in Varnish
vcl 4.0;
import std;
sub vcl_recv {
if (!req.http.X-Forwarded-Proto) {
if(std.port(server.ip) == 443) {
set req.http.X-Forwarded-Proto = "https";
} else {
set req.http.X-Forwarded-Proto = "http";
@ThijsFeryn
ThijsFeryn / magento.vcl
Last active July 28, 2021 18:57
Magento VCL
vcl 4.0;
import std;
backend default {
.host = "localhost";
.port = "8080";
.first_byte_timeout = 600s;
.probe = {
.url = "/health_check.php";
@ThijsFeryn
ThijsFeryn / wordpress.vcl
Last active November 9, 2021 08:52
WordPress VCL
vcl 4.1;
import std;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
# Add hostnames, IP addresses and subnets that are allowed to purge content
@ThijsFeryn
ThijsFeryn / default.vcl
Created June 22, 2020 13:18
Varnish synth output
vcl 4.1;
backend default none;
sub vcl_recv {
return(synth(200,"OK"));
}
@ThijsFeryn
ThijsFeryn / varnish.service
Created May 13, 2020 12:01
varnish systemd service
[Unit]
Description=Varnish Cache Plus, a high-performance HTTP accelerator
After=network-online.target
[Service]
Type=forking
KillMode=process
# Maximum number of open files (for ulimit -n)
LimitNOFILE=131072
@ThijsFeryn
ThijsFeryn / docker-compose.yml
Created April 1, 2020 11:10
Varnish docker-compose.yml file that defines container dependencies
version: '3'
services:
echo-server:
image: "jmalloc/echo-server:latest"
container_name: origin
hostname: origin
ports:
- "8080:8080"
varnish:
image: "varnish:latest"
@ThijsFeryn
ThijsFeryn / edgestash-twig-extension.php
Created September 2, 2019 15:15
Twig extension for edgestash
<?php
namespace App\EdgestashBundle;
use Symfony\Component\HttpFoundation\RequestStack;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;
use Twig\TwigFunction;
class TwigExtension extends AbstractExtension
{
@ThijsFeryn
ThijsFeryn / edgestash-subscriber.php
Created September 2, 2019 15:14
edgestash negotiation in Symfony
<?php
namespace App\EdgestashBundle\EventSubscriber;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class EdgestashSubscriber implements EventSubscriberInterface
{
@ThijsFeryn
ThijsFeryn / edgestash-synth-backend.vcl
Created August 5, 2019 14:37
edgestash through link headers & a synthesized JSON backend
vcl 4.1;
import cookieplus;
import edgestash;
import std;
import ykey;
import redis;
import synthbackend;
backend default {
.host = "origin";