Mesmo que isso dependa do caso de uso específico, eu aconselho Encrypt-then-Compress. Caso contrário, um invasor pode vazar informações do número de blocos criptografados.
Assumimos que um usuário envia uma mensagem para o servidor e um invasor com a possibilidade de anexar texto à mensagem do usuário antes de enviar (por meio de javascript, por exemplo). O usuário quer enviar alguns dados sensatos ao servidor e o invasor deseja obter esses dados. Assim, ele pode tentar anexar mensagens diferentes aos dados que o usuário envia ao servidor. Em seguida, o usuário compacta sua mensagem e o texto anexado do invasor.
Assumimos uma compressão DEFLATE LZ77, então a função substitui a mesma informação por um ponteiro para a primeira aparição. Portanto, se o invasor puder reproduzir o texto simples do furo, a função de compactação reduzirá o tamanho do texto simples para o tamanho original e um ponteiro. E após a criptografia, o invasor pode contar o número de blocos de cifra, para que ele possa ver se os dados anexados foram os mesmos que os dados enviados pelo usuário ao servidor. Mesmo que esse caso pareça um pouco construído, é um sério problema de segurança no TLS. Essa ideia é usada por um ataque chamado CRIME para vazar cookies em uma conexão TLS para roubar sessões.
fonte: link