Em relação ao desempenho do Squid, alguns tipos de ACL requerem a suspensão da solicitação atual para acessar uma fonte de dados externa.
Alguns tipos de ACLs exigem informações que podem não estar mais disponíveis para o Squid, e isso requer suspensão do trabalho na atual solicitação, tendo que consultar alguma fonte externa e retomar o trabalho quando a informação estiver disponível.
Este é, por exemplo, o caso do DNS, dos autenticadores e dos scripts de autorização externa. As ACLs podem, assim, ser divididas em ACLs rápidas [fast] que não necessitam ir às fontes externas e ACLs lentas [slow].
Conhecer o comportamento das ACLs é relevante, porque nem todas as diretivas suportam todos os tipos de ACLs. Se uma ACL do tipo SLOW tem que ser verificada e os resultados da seleção não estão no cache, essa ACL não será correspondida.
O Squid armazena os resultados de pesquisas das ACLs sempre que possível, porém, as ACLs lentas nem sempre precisam consultar fontes de dados externas. Em outras palavras, as ACLs do tipo SLOW não são confiáveis em todas as cláusulas de verificação de acesso.
As ACLs rápidas estão marcadas com [fast] no "squid.conf" e as ACLs lentas estão marcadas com [slow]. As ACL marcadas com {R} são ACLs de resposta.
As listas abaixo podem estar incompletas. Para ter a lista completa do tipo de ACL da sua versão do Squid, consulte o arquivo "squid.conf.documented".
À propósito, o "squid.conf", além de quilométrico, é de uma confusão sem tamanho. Se foi apenas um sujeito que elaborou aquilo ali, esse cara deve ter algum distúrbio mental.
Lista de ACLs rápidas (Squid 3):
- all (built-in)
- src
- dstdomain
- dstdom_regex
- myip
- arp
- src_as
- peername
- time
- url_regex
- urlpath_regex
- port
- myport
- myportname
- proto
- method
- http_status {R}
- browser
- referer_regex
- snmp_community
- maxconn
- max_user_ip
- req_mime_type
- req_header
- rep_mime_type {R}
- user_cert
- ca_cert
Lista de ACLs lentas:
- dst
- dst_as
- srcdomain
- srcdom_regex
- ident
- ident_regex
- proxy_auth
- proxy_auth_regex
- external
- ext_user
- ext_user_regex
Cláusulas de acesso rápido:
- icp_access
- htcp_access
- htcp_clr_access
- miss_access
- ident_lookup_access
- reply_body_max_size {R}
- authenticate_ip_shortcircuit_access
- log_access
- header_access
- delay_access
- snmp_access
- cache_peer_access
- ssl_bump
- sslproxy_cert_error
- follow_x_forwarded_for
Cláusulas de acesso lento:
- http_access
- adapted_http_access (2.x call this http_access2)
- http_reply_access
- url_rewrite_access
- storeurl_access
- location_rewrite_access
- always_direct
- never_direct
- cache
Cálculo do cache_dir e do cache_mem
O "cache_mem" do Squid, especifica a quantidade ideal de memória a ser usada para:
# * In-Transit objects (Objetos em trânsito)
# * Hot Objects (Objetos Hot)
# * Negative-Cached objects (Objetos em cache negativo)
Os objetos em trânsito são objetos que estão sendo buscados em servidores remotos, enquanto "objetos quentes" são objetos que o Squid decidiu que são populares o suficiente para que uma cópia seja mantida na memória, para acelerar o acesso (objetos constantemente solicitados).
E objetos em cache negativo, significam objetos não-cacheáveis, como por exemplo, logs de mensagens de status HTTP. O cache negativo evita a repetição de consultas adicionais para objetos que não mais existem.
Os objetos que têm trânsito, têm prioridade, ou seja, quando exceder o limite da memória, o Squid liberará o espaço dos Hot Objects e dos Negative-cached Objects para guardar os objetos em Trânsito. Todos os objetos são armazenados na memória em blocos de 4 KB.