SlideShare a Scribd company logo
1 of 29
Download to read offline
var∙nish:

     
A
deceptively
attractive
external
appearance;
an
outward
show.

var∙nished,
var∙nish∙ing:

     
To
give
a
smooth
and
glossy
finish
to.

We
will
talk
about...

  What
is
a
Reverse
Proxy
Cache?


  Architecture
of
Varnish


  Installation
&
Basic
Configuration


  VCL
by
example


  Tools


  Varnish
&
Rails


  Misc
tips
&
tricks

ehcaC
yxorP
esreveR


     A
     P
     P





              R
A             P
P
P

              C



     A
     P
     P

What?

  






























=



  Reverse‐Proxy


   ...
à
la
HAProxy,
Pound,
mod_proxy_balancer
etc.


  +
Cache


   ...
only
proxy
to
backend
if
necessary



     a.k.a.:
„HTTP
Accelerator“
(=
BS
Bingo)



     Other
„HTTP
Accelerators“:
                           Web Cache 10g
                                                 BIG‐IP

Users

  search.twitter.com


  hulu.com


  wikia.com


  pcwelt.de


  creativecommons.org


  ...

Architecture:
Cache
Store

               Squid
                                      Varnish

Mem‐Store
          Disk‐Store
                           VMM
(OS)

             VMM
(OS)
                          RAM
                  HDD

   RAM
                 HDD



•  one
file
per
object
(pre
2.7)
             •  one
big
file
mapped
to
VM


•  book
keeping
(disk
vs.
memory)

•  VMM
often
„smarter“





           http://varnish.projects.linpro.no/wiki/ArchitectNotes

Architecture:
VCL

  Varnish
Configuration
Language

  DSL,
compiled
to
C
code
(srsly!)

  allows
inline
C
code

   C{
        syslog(LOG_INFO, “Just served the 1000000th page. Hooray!");
   }C


  hooks
into
a
requests
lifecycle

  Backends,
ACLs,
LB‐strategies
defined
here

  can
be
hot‐loaded
into
a
running
varnishd

  hot‐switching
between
multiple
versions/profiles

Architecture:
Logging

  Not
your
daddy‘s
log
file


  Logs
straight
to
shared
memory


  Enables
all
kinds
of
fancy
tools:

     varnishtop

     varnishstat

     varnishhist
(= geek pr0n)


  Use
varnishlog/varnishncsa
to
generate
old
school
logs

Installation

  Debian/Ubuntu:

apt-get    –t unstable install varnish

  OS
X
via
MacPorts:

sudo   port install varnish


  From
source:
./configure    && make && make install




Interesting
files:

  /etc/default/varnish

  /etc/varnish/*.vcl
Configuration

  Zero
configuration
in
a
perfect
world

   (=
all
origin
servers
perfect
HTTP
citizens,
setting
correct

   




cache
control
headers,
conservative
use
of
cookies)


  Varnish
won't
cache
anything
"private"
or
carrying
a

   cookie
by
default


  The
real
world
sucks:

       Tracking
cookies
(Google
Analytics)

       Session
cookies
although
no
data
in
session

       "Cache‐control:
private"
by
default
(Rails)
*

       ...


                    (*
which
is
a
sensible
default,
btw.)

VCL:
Backends
&
Probes

   backend default {
      .host = "10.0.0.12";
      .port = "80";
   }

   backend slow_j2ee_app {
      .host = "10.0.0.13";
      .port = "8080";
      .connect_timeout = 1s;
      .first_byte_timeout = 10s;
      .between_bytes_timeout = 5s;
      .probe = {
         .url = "/check.jsp";
         .timeout = 1s;
      }
   }
VCL:
Directors

for
simple
load‐balancing
requirements



director d1 random {
   .retries = 3;
   { .backend = "default";
     .weight = 10; }
   { .backend = "other_host";
     .weight = 5; }
}

director d2 round-robin {
  ...
}
VCL:
ACLs

 customize
behaviour
for
different
clients



acl admins {
  "localhost";
  "10.0.0.0"/24;
  ! "10.0.0.3"; # intern's laptop
}

...

 if (client.ip ~ admins) {
   set req.http.x-magic-auth = "1";
 } else {
   unset req.http.x-magic-auth;
 }
VCL:
Hooks

Most
important:


  vcl_recv     
Request
comes
in,
decide
what
to
do


  vcl_fetch 
Fetched
obj
from
backend,
allows
tweaking


  vcl_deliver 
Object
is
about
to
be
delivered
to
client


  vcl_hash     
Calculate
hash
key
for
lookup,
defaults
to
full
URL


Other
hooks:


  
vcl_miss,
vcl_hit,
vcl_error,
vcl_discard,


   vcl_timeout,
vcl_pipe,
vcl_pass


              http://varnish.projects.linpro.no/wiki/VCL

VCL:
Functions
&
Variables

  
regsub(),    regsuball(), purge_hash(), purge_url()

  
own
subroutines
(not
functions)
with

sub    foo { ... }

  
include    "other.vcl"; to
split
files
into
parts


  
req.*          Request


  
resp.*         Response


  
bereq.*        Backend
Request


  
obj.*          requested
Object


  
client.*,    server.*

  
set   / unset for
variables, remove additionally
for
headers


                 http://varnish.projects.linpro.no/wiki/VCL

Example:
Choose
backend


  sub vcl_recv {
    if (req.host ~ "slowapp.com$") {
      set req.backend = slow_j2ee_app;
    } else {
      set req.backend = other_backend;
    }
  }
Example:
Serve
static
assets


sub vcl_recv {
  if (req.url ~ "^/(images|javascripts|styles)/") {
    remove req.http.cookie;
  }
}

sub vcl_fetch {
  if (req.url ~ "^/(images|javascripts|styles)/") {
    remove obj.http.set-cookie;
  }
}
Example:
Remove
certain
cookies


sub vcl_recv {
  set req.http.cookie = regsuball(
                           req.http.cookie,
                           "__utm[azc]=[^;]+(; )?", ""
                        );
  set req.http.cookie = regsub(req.http.cookie,
                                "; $", "");
  if (req.http.cookie ~ "^ *$") {
    remove req.http.cookie;
  }
}
Example:
"Stale
while
revalidate"

            Serve
slightly
stale
content
while
a
fresh
version
is
fetched

            =>
better
user
experience
+
no
thread
pileup



                     sub vcl_recv {
                         set req.grace = 2m;
                     }

                     sub vcl_fetch {
                         set obj.grace = 2m;
                     }




http://www.rfc‐editor.org/internet‐drafts/draft‐nottingham‐http‐stale‐controls‐00.txt

Example:
Backend
is
down

Serve
cachable
(outdated)
content
even
when
the
backend
is
on
fire



          sub_recv {
            if (req.backend.healthy) {
              set req.grace = 30s;
            } else {
              set req.grace = 1h;
            }
          }

          sub_fetch {
            set obj.grace = 1h;
          }
Tools:
varnishtop

Most
popular
Browser
/
Agent:


varnishtop -i RxHeader -I ^User-Agent

 2667.43   RxHeader    User-Agent:   Mozilla/5.0   (Windows; U;   Windows NT 5.1; de; rv:1.9
  459.54   RxHeader    User-Agent:   Mozilla/5.0   (Windows; U;   Windows NT 5.1; de; rv:1.9
  372.66   RxHeader    User-Agent:   Mozilla/5.0   (Windows; U;   Windows NT 6.0; de; rv:1.9
  369.90   RxHeader    User-Agent:   Mozilla/4.0   (compatible;   MSIE 7.0; Windows NT 5.1)
  353.06   RxHeader    User-Agent:   Mozilla/5.0   (compatible;   Googlebot/2.1; +http://www
  341.84   RxHeader    User-Agent:   Mozilla/4.0   (compatible;   MSIE 6.0; Windows NT 5.1;
  323.87   RxHeader    User-Agent:   Mozilla/4.0   (compatible;   MSIE 7.0; Windows NT 5.1;
  317.88   RxHeader    User-Agent:   Mozilla/5.0   (Windows; U;   Windows NT 6.0; de; rv:1.9
  250.55   RxHeader    User-Agent:   Mozilla/4.0   (compatible;   MSIE 7.0; Windows NT 5.1;
  231.82   RxHeader    User-Agent:   Mozilla/4.0   (compatible;   MSIE 6.0; Windows NT 5.1;
  173.69   RxHeader    User-Agent:   Mozilla/4.0   (compatible;   MSIE 6.0; Windows NT 5.1;



Most
popular
URLs:


varnishtop –i RxUrl

Traffic
sources:


varnishtop –i RxHeader –I ^Referer
Tools:
varnishhist

                       |
                       |
                       |
                       |
                                  Hits

                       |
                       |
                       |
                       |
                       |
                       |
                       |
                       |
                       |
                       |
                       |
                       |
                      ||
                      |||
                      |||
                      |||
                      |||
                      |||
                      |||
                      |||
                      |||
                      |||
                      ||||
                      ||||                                  Misses

                      ||||
                      |||||
                      |||||
                      ||||||                 ##         #     #|
+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------
|1e-6         |1e-5          |1e-4        |1e-3         |1e-2         |1e-1         |1e0          |1e1          |1e2
More
Tools:

  varnishlog: 
      
Generate
(customized)
logs


  varnishncsa:       
Generate
Apache
compatible
logs


  varnishadm:        
Manipulate
a
running
varnishd


  




varnishadm
                -T localhost:6082 purge.url "^/images/"
     varnishadm –T localhost:6082 vcl.load /etc/my.vcl

  varnishreplay:        
Parses
a
log
generated
by
varnishlog

       
 
        







and
replays
the
traffic!

Varnish
&
Rails

  Proper
use
of

expires_in instead
of
page
caching


  Only
use

session if
really
necessary


  Purging
of
content
possible
with:

    `varnishadm –T #{hostport} purge.url #{url2purge}`
    net/telnet
    klarlack:
http://github.com/schoefmax/klarlack


  !secure
the
connection
to
varnish's
admin
interface!


   (ssh
tunnel,
iptables
etc.)

Varnish
&
Rails:
Sweepers

# environment.rb
config.gem "schoefmax-klarlack", :lib => 'klarlack', :source => 'http://gems.github.com'
VARNISH = Varnish::Client.new('1.2.3.4:6082')


# app/sweepers/blog_sweeper.rb
class BlogSweeper < ActionController::Caching::Sweeper
  observe Post
  include ActionController::UrlWriter

  after_save(post)
    expire_post(post)
  end

  after_destroy(post)
    expire_post(post)
  end

  private

  def expire_post(post)
      VARNISH.purge :url, post_path(post)
      VARNISH.purge :url, latest_posts_path
  end
end
Misc:
Edge
Side
Includes
(ESI)

  Invented
by
Akamai
&
Co.

    <esi:include src="http://example.com/friend_feed"/>

  http://www.w3.org/TR/esi‐lang


  fragment_fu‐plugin
for
Rails
(part
of
mongrel‐esi)


                            Header,
TTL:
15
min




                                               Activity‐
                   Nav,

                                Article,
       Feed,

                   TTL:

                               TTL:
5
min
      TTL:

                  60
min

                                                2
min

Misc:
Fine
tuning
your
setup


  Pre‐create
storage
file
(minimizes
fragmentation).
4GB:


  
dd   if=/dev/zero of=storage.bin bs=4M count=1024

  Tweak
varnish's
various
startup
settings
–
Twitters
are:


  
http://projects.linpro.no/pipermail/varnish‐dev/2009‐February/000968.html

Misc:
Monitoring
with
munin

Thank
you.


•  http://www.varnish‐cache.org

•  http://github.com/schoefmax/klarlack

•  http://varnish.projects.linpro.no/wiki/VCL

•  http://varnish.projects.linpro.no/wiki/ArchitectNotes

•  http://www.rfc‐editor.org/internet‐drafts/draft‐nottingham‐http‐stale‐controls‐00.txt

•  http://projects.linpro.no/pipermail/varnish‐dev/2009‐February/000968.html

•  http://www.w3.org/TR/esi‐lang


More Related Content

What's hot

Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2Marcus Deglos
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh thingsMarcus Deglos
 
Apache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpApache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpSander Temme
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & LuaKit Chan
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on NetscalerMark Hillick
 
Usenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyUsenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyLeif Hedstrom
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with PuppetKris Buytaert
 
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...Alexander Lisachenko
 
Building your own CDN using Amazon EC2
Building your own CDN using Amazon EC2Building your own CDN using Amazon EC2
Building your own CDN using Amazon EC2SergeyChernyshev
 
Speeding Up The Snail
Speeding Up The SnailSpeeding Up The Snail
Speeding Up The SnailMarcus Deglos
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackMatt Ray
 
HTTP caching with Varnish
HTTP caching with VarnishHTTP caching with Varnish
HTTP caching with VarnishDavid de Boer
 
Supercharging Content Delivery with Varnish
Supercharging Content Delivery with VarnishSupercharging Content Delivery with Varnish
Supercharging Content Delivery with VarnishSamantha Quiñones
 
Challenges when building high profile editorial sites
Challenges when building high profile editorial sitesChallenges when building high profile editorial sites
Challenges when building high profile editorial sitesYann Malet
 
Magento 2 Workflows
Magento 2 WorkflowsMagento 2 Workflows
Magento 2 WorkflowsRyan Street
 
NGINX High-performance Caching
NGINX High-performance CachingNGINX High-performance Caching
NGINX High-performance CachingNGINX, Inc.
 

What's hot (20)

Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2
 
Performance all teh things
Performance all teh thingsPerformance all teh things
Performance all teh things
 
Apache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling UpApache Performance Tuning: Scaling Up
Apache Performance Tuning: Scaling Up
 
Apache Traffic Server & Lua
Apache Traffic Server & LuaApache Traffic Server & Lua
Apache Traffic Server & Lua
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on Netscaler
 
Usenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a ProxyUsenix LISA 2012 - Choosing a Proxy
Usenix LISA 2012 - Choosing a Proxy
 
Memcached
MemcachedMemcached
Memcached
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with Puppet
 
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...
Handling 10k requests per second with Symfony and Varnish - SymfonyCon Berlin...
 
ReplacingSquidWithATS
ReplacingSquidWithATSReplacingSquidWithATS
ReplacingSquidWithATS
 
Building your own CDN using Amazon EC2
Building your own CDN using Amazon EC2Building your own CDN using Amazon EC2
Building your own CDN using Amazon EC2
 
Speeding Up The Snail
Speeding Up The SnailSpeeding Up The Snail
Speeding Up The Snail
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
HTTP caching with Varnish
HTTP caching with VarnishHTTP caching with Varnish
HTTP caching with Varnish
 
Supercharging Content Delivery with Varnish
Supercharging Content Delivery with VarnishSupercharging Content Delivery with Varnish
Supercharging Content Delivery with Varnish
 
Cassandra as Memcache
Cassandra as MemcacheCassandra as Memcache
Cassandra as Memcache
 
Challenges when building high profile editorial sites
Challenges when building high profile editorial sitesChallenges when building high profile editorial sites
Challenges when building high profile editorial sites
 
Varnish Cache
Varnish CacheVarnish Cache
Varnish Cache
 
Magento 2 Workflows
Magento 2 WorkflowsMagento 2 Workflows
Magento 2 Workflows
 
NGINX High-performance Caching
NGINX High-performance CachingNGINX High-performance Caching
NGINX High-performance Caching
 

Similar to Caching with Varnish

My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009Cosimo Streppone
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and dockerFabio Fumarola
 
NetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16xNetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16xHank Preston
 
PHP London Dec 2013 - Varnish - The 9 circles of hell
PHP London Dec 2013 - Varnish - The 9 circles of hellPHP London Dec 2013 - Varnish - The 9 circles of hell
PHP London Dec 2013 - Varnish - The 9 circles of hellluis-ferro
 
VUG5: Varnish at Opera Software
VUG5: Varnish at Opera SoftwareVUG5: Varnish at Opera Software
VUG5: Varnish at Opera SoftwareCosimo Streppone
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardwayDave Pitts
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantBrian Hogan
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefMatt Ray
 
Everyday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsEveryday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsNikolay Stoitsev
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context ConstraintsAlessandro Arrichiello
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2Vincent Mercier
 
Professional deployment
Professional deploymentProfessional deployment
Professional deploymentIvelina Dimova
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...Amazon Web Services
 
Varnish e caching di applicazioni Rails
Varnish e caching di applicazioni RailsVarnish e caching di applicazioni Rails
Varnish e caching di applicazioni RailsAntonio Carpentieri
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packerfrastel
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDSean Chittenden
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with DockerPatrick Mizer
 

Similar to Caching with Varnish (20)

My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and docker
 
NetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16xNetDevOps Developer Environments with Vagrant @ SCALE16x
NetDevOps Developer Environments with Vagrant @ SCALE16x
 
PHP London Dec 2013 - Varnish - The 9 circles of hell
PHP London Dec 2013 - Varnish - The 9 circles of hellPHP London Dec 2013 - Varnish - The 9 circles of hell
PHP London Dec 2013 - Varnish - The 9 circles of hell
 
VUG5: Varnish at Opera Software
VUG5: Varnish at Opera SoftwareVUG5: Varnish at Opera Software
VUG5: Varnish at Opera Software
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and Chef
 
Performance
PerformancePerformance
Performance
 
Everyday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.jsEveryday tools and tricks for scaling Node.js
Everyday tools and tricks for scaling Node.js
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
 
Professional deployment
Professional deploymentProfessional deployment
Professional deployment
 
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
(ARC402) Deployment Automation: From Developers' Keyboards to End Users' Scre...
 
Varnish e caching di applicazioni Rails
Varnish e caching di applicazioni RailsVarnish e caching di applicazioni Rails
Varnish e caching di applicazioni Rails
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
 
Vagrant For DevOps
Vagrant For DevOpsVagrant For DevOps
Vagrant For DevOps
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSD
 
Developing and Deploying PHP with Docker
Developing and Deploying PHP with DockerDeveloping and Deploying PHP with Docker
Developing and Deploying PHP with Docker
 

Recently uploaded

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 

Recently uploaded (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 

Caching with Varnish