Why's SD -> Ethernet Card -> Webbrowser so slow?

client.println("HTTP/1.1 200 OK");
          if (strstr(filename, ".htm") != 0)
            client.println("Content-Type: text/html");
          else if (strstr(filename, ".css") != 0)
            client.println("Content-Type: text/css");
          else if (strstr(filename, ".png") != 0)
            client.println("Content-Type: text/php");
          else if (strstr(filename, ".php") != 0)
            client.println("Content-Type: image/png");
          else if (strstr(filename, ".jpg") != 0)
            client.println("Content-Type: image/jpeg");
          else if (strstr(filename, ".gif") != 0)
            client.println("Content-Type: image/gif");
          else if (strstr(filename, ".3gp") != 0)
            client.println("Content-Type: video/mpeg");
          else if (strstr(filename, ".pdf") != 0)
            client.println("Content-Type: application/pdf");
          else if (strstr(filename, ".js") != 0)
            client.println("Content-Type: application/x-javascript");
          else if (strstr(filename, ".xml") != 0)
            client.println("Content-Type: application/xml");
          else
            client.println("Content-Type: text");
            client.println();

            byte clientBuf[64];
            int clientCount = 0;
           while(file.available()){
              clientBuf[clientCount] = file.read();
              clientCount++;
              if(clientCount > 63) {
                Serial.println("Pacote de dados de 64 bytes enviado!");
                client.write(clientBuf,64);
                clientCount = 0;
              }
            }
              if(clientCount > 0) client.write(clientBuf,clientCount);
            
           client.print("<html><body>");

          if (verifica){
          client.println(F("<div id=\"outer\">"));
          client.print(F("<div id=\"inner\" style=\"height:"));
          client.print(percentagem, 1);
          client.println(F("%\">"));
          client.println(F("</div></div>"));
          client.println("</p></body></html>");
          }   
          if (verifica2){
           if (percentagem >= 90 || percentagem <=10){
           client.println(F("<table width=\"210\" height=\"42\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">"));
           client.println(F("<tr>"));
           client.print(F(" <td width=\"69\" height=\"40\" class=\"iframe2\"><div align=\"center\"><b><font color=#E60000>"));
           client.print(percentagem, 1);
           client.println(F("%</font></b></div></td>"));
           client.print(F("<td width=\"134\" class=\"iframe2\"><div align=\"center\"><b><font color=#E60000>"));
           client.print(litros, 1);
           client.print(F("</font></b></div></td>"));
           client.println(F("</tr>"));
           client.println(F("</table>"));
           client.println("</p></body></html>");
           } else {
           client.println(F("<table width=\"210\" height=\"42\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">"));
           client.println(F("<tr>"));
           client.print(F(" <td width=\"69\" height=\"40\" class=\"iframe2\"><div align=\"center\"><b>"));
           client.print(percentagem, 1);
           client.println(F("%</b></div></td>"));
           client.print(F("<td width=\"134\" class=\"iframe2\"><div align=\"center\"><b>"));
           client.print(litros, 1);
           client.print(F("</b></div></td>"));
           client.println(F("</tr>"));
           client.println(F("</table>"));
           client.println("</p></body></html>");
       }
          }
          verifica = false;
          verifica2 = false;
          file.close();

        }
        else {
          client.println("HTTP/1.1 404 Not Found");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<h2>Error 404</h2>");
          client.println("");
        }
        break;
      }
          if(strstr(clientline, "GET/&niv") !=0){
            Log = file.open(&root, ficheiroLog, O_READ | O_APPEND);
            if (Log){
              Serial.println(F("A enviar ficheiro LOG para download!"));
              byte clientBuffer[64];
              int clientCounter = 0;
                while(file.available()) {
                clientBuffer[clientCounter] = file.read();
                clientCounter++;
                if(clientCounter > 63) {
                Serial.println("Pacote de dados de 64 bytes enviado!");
                client.println("Content-Disposition: attachment; filename=\"ficheiroLOG.txt\"");
                client.write(clientBuffer,64);
                clientCounter = 0;
              }
            }
              if(clientCounter > 0) client.write(clientBuffer,clientCounter);
          file.close();
      } else {
        client.println("HTTP/1.1 404 Not Found");
        client.println("Content-Type: text/html");
        client.println();
        client.println("<h2>ERRO! Ficheiro LOG não existe!</h2>");
        client.println("");
    }
    }     
  }

//PISCA LED PARA INDICAR QUE ESTÁ CONCLUÍDA A COMUNICAÇÃO SERVIDOR-CLIENTE E CLIENTE-SERVIDOR
    digitalWrite(ledIndicadorComms, HIGH);
    delay(1);
    digitalWrite(ledIndicadorComms, LOW);
    delay(1);
    client.stop();
  }
}

/*FIM DO PROGRAMA*/

Where is

//COLOCA EM BUFFER OS BYTES LIDOS DO FICHEIRO DO CARTÃO SD
            byte clientBuf[64];
            int clientCount = 0;
           while(file.available()){
              clientBuf[clientCount] = file.read();
              clientCount++;
              if(clientCount > 63) {
                Serial.println("Pacote de dados de 64 bytes enviado!");
                client.write(clientBuf,64);
                clientCount = 0;
              }
            }
              if(clientCount > 0) client.write(clientBuf,clientCount);

I had on my original code

 int16_t c;
          while ((c = file.read()) >= 0) {
            client.print((char)c);
          }