Smart LB to Caches v2

#################################################
#
# aFleX script for host based cache selection.
#
# Contents of the array ::CACHEURLS needs to be in
# the form:
# "" ""
#
# For example:
# "youtube.com" "cache_group2"
#
`#################################################

when RULE_INIT { set ::DEBUG 0 array set ::CACHEURLS { “youtube.com” “cache_group1” “googlevideo.com” “cache_group1” “facebook.com” “cache_group1” “apple.com” “cache_group2” “fbcdn.net” “cache_group1” “googlesyndication.com” “cache_group1” “gstatic.com” “cache_group2” “gmodules.com” “cache_group2” “googleapis.com” “cache_group2” “doubleclick.net” “cache_group3” “ebay.com” “cache_group3” “last.fm” “cache_group3” “microsoft.com” “cache_group3” “msn.com” “cache_group3” “soundcloud.com” “cache_group3” “twitter.com” “cache_group3” “yahoo.com” “cache_group3” “zynga.com” “cache_group3” } }

when HTTP_REQUEST { set HOST [string tolower [HTTP::host]] set URI [string tolower [HTTP::uri]]

set l1 [string last . $HOST] set l2 [string last . $HOST [incr l1 -1]] set HOST [string range $HOST [incr l2] 200] if { $::DEBUG == 1 } { log “HOST: $HOST” }

if { [info exists ::CACHEURLS($HOST)] } { set SERVICEGROUP $::CACHEURLS($HOST) if { $::DEBUG == 1 } { log “service-group: $SERVICEGROUP” } pool $SERVICEGROUP } else { if { $::DEBUG == 1 } { log “Not whitelisted → pool gateway” } pool gateway } }`

File attached.