O Linux, o Apache HTTPD ou o PHP armazenam em cache arquivos acessados com freqüência / recentemente?

1

Digamos que temos um arquivo index.php simples:

<?php
    inclde('file1.php');
    inclde('file2.php');
    inclde('file3.php');

Presumivelmente, isso resultará em três solicitações adicionais de E / S separadas para o disco, além de index.php quando o arquivo for exibido.

Agora, digamos que esse arquivo seja colocado em um site e solicitado com frequência. Isso faria sentido se esses arquivos estivessem de alguma forma armazenados em cache na memória, em vez de fazer solicitações de E / S toda vez que alguém visitasse o site.

Perguntas:

  1. O cache do http do Apache é index.php ?
  2. E quanto às operações de 3 include() ?
  3. O PHP solicita os arquivos do SO através do Apache? Importa qual modelo de mpm é usado?
  4. O nginx, lighttpd ou qualquer outro servidor da Web faz cache?
  5. Isso também depende do sistema de arquivos do SO? Ou seja, os sistemas operacionais Linux geralmente armazenam em cache arquivos que são acessados com frequência?
  6. Ou há cache em um nível ainda mais baixo?
  7. Ou o PHP ou qualquer outro mecanismo de aplicação de servidor de alguma forma armazena em cache os arquivos e as solicitações de I / O nunca chegam ao sistema operacional?

Como a E / S de disco geralmente é o maior gargalo, saber como os arquivos são armazenados em cache em vários níveis por um servidor da Web pode ajudar a aprimorar o desempenho e até mesmo o desenvolvimento de aplicativos, por exemplo, talvez concatenar arquivos de aplicativos curtos em vez de múltiplos inclua o desempenho da ajuda.

Obrigado por ajudar!

    
por light 12.06.2015 / 11:24

2 respostas

3

O sistema operacional tem cache de sistema de arquivos, que armazena em cache as solicitações de leitura / gravação no dispositivo de hardware real.

Depois, para as perguntas específicas:

  1. O Apache não faz cache.
  2. As funções include () não fazem cache nas instalações padrão do PHP. Se você instalar um cache OPCode como APC, Xcache ou OPCache, ele armazenará em cache as versões compiladas do código na memória.
  3. Os acessos ao sistema de arquivos são feitos por meio de chamadas do sistema de arquivos do sistema operacional.
  4. Não há nenhum benefício em fazer qualquer cache, portanto eles não fazem isso. O cache do sistema de arquivos é suficiente para o armazenamento em cache de arquivos estáticos e quaisquer linguagens dinâmicas têm melhores opções para o armazenamento em cache.
  5. A camada VFS do Linux faz o armazenamento em cache, portanto, isso não é feito pelos sistemas de arquivos.
  6. Os próprios discos rígidos também têm algum armazenamento em cache, mas o benefício não é tão grande nessa camada, porque não há informações sobre a estrutura de dados que sejam benéficas para o armazenamento em cache.
  7. Sim, com um cache OPcode adequado mencionado na resposta nº 2.
por 12.06.2015 / 17:00
4

Sim, se houver RAM suficiente, o sistema de arquivos do Linux armazenará esses arquivos em cache. Todas as outras camadas dependem do cache do FS.

Pode haver níveis mais altos de cache que armazenam em cache a saída gerada do site, mas isso deve ser configurado especificamente com um módulo apropriado, como o APC.

    
por 12.06.2015 / 11:26