O método exato usado para definir os cabeçalhos de cache varia dependendo de qual servidor da Web você está usando.
No IIS 6, por exemplo, você pode clicar com o botão direito do mouse em qualquer pasta ou arquivo do console de gerenciamento do IIS, selecionar Propriedades e definir a validade do conteúdo por quanto tempo desejar (na guia Cabeçalhos HTTP).
No IIS7, selecione a pasta (ou o arquivo na visualização de conteúdo) e abra o módulo "Cabeçalhos de resposta HTTP". No painel de ações, selecione "Definir cabeçalhos comuns ..." e ative a expiração do conteúdo.
Geralmente agrupo diferentes tipos de arquivos em pastas diferentes. Os arquivos CSS estariam em uma pasta de estilos, imagens em uma pasta de imagens etc. Você pode definir tempos de expiração diferentes para cada uma dessas pastas. Para CSS, você pode configurá-lo para alguns dias. JavaScript pode ser uma semana. Para imagens eu geralmente escolho entre 7 e 30 dias, dependendo do site. Você deve selecionar seus próprios tempos de expiração com base na frequência com que o site é atualizado.