Código persiana y millis

Tu código no funcionaba al menos con mi compilador.
El mio responde a cada comando y con velocidad.

Ahora lo que tu planteas es un problema de tu programación. Yo eso no lo he visto. Porque al intentar ver tu programa me daba errores y al superarlos no respondia a las peticiones.
Cuando logré que todo funcione fue lo que te postee.

Veré lo que comentas.

O sea que acá esta tu problema

if (req.indexOf("/abajotodo") != -1)  { 
      tiempoAnterior=millis();  
      temp =1;
      digitalWrite(rele2,LOW);  
      digitalWrite(rele1,HIGH);
      Serial.println("Bajando persiana");
  }

  if ((millis()>tiempoAnterior+periodo)&&temp==1){  
      digitalWrite(rele2,HIGH); 
      temp = 0; 
      Serial.println("Persiana completamente bajada");
  }

  if (req.indexOf("/tiempo") != -1)  {
      Serial.println(millis());
      Serial.println(tiempoAnterior);
  }
  if (req.indexOf("/arribatodo") != -1)  { 
      tiempoAnterior2 = millis();  
      temp2 = 1;
      digitalWrite(rele1,LOW); 
      digitalWrite(rele2,HIGH);
      Serial.println("Subiendo persiana");
  }

  if ((millis()>tiempoAnterior2+periodo2)&&temp2==1){  
      digitalWrite(rele1,HIGH);  
      temp2 = 0;  
      Serial.println("Persiana completamente subida");
  }

Dices que sin quitar lo que tu comentastes eso desconecta el relé1 o 2 según corresponda.
No lo comprendo por ahora.

Ya veo que esto es el problema.. se queda esperando aca sin hacer nada

// Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }