Proxyserver mit Komprimierung!
-
Das habe ich nicht gefragt.
String s= Memo1->Lines->Strings[0]; int durchlauf = 1, akt_pos = 0; String s_neu[100]; while (durchlauf <= s.Length()) { if ((String)s[durchlauf] == (String)" ") { akt_pos++; durchlauf++; } else { s_neu[akt_pos] +=s[durchlauf]; durchlauf++; } }Steht in der FAQ. Beides hat Praktisch keinen Einfluss auf die Geschwindigkeit.
Dennnoch danke fürs pushen

-
Der Proxy sollte vielleicht auch POST, HEAD, DELETE beherrschen? HTTP bietet mehr als nur GET
-
Hmm Eigentlich ist mein Proxy dazu gedacht die "Einkommenden" Daten zu beschleunigen.
-
Der Proxy läuft auf meinem Rechner und soll die "einkommenden Daten" beschleunigen???

Die die schon ohnehin dann fast auf meinem Rechner sind?? Üblicherweise "surft" man über einen Proxy, d.h. Request geht an den Proxy, der leitet Request weiter, nimmt Response entgegen, gibt Response an mich zurück.
-
Also ich möchte den Proxy auf meinem WindowsRoot laufen lassen.
Dieser soll die Daten stark komprimieren, damit, wenn jemand ISDN oder Modem hat Webseiten schneller geladen werden. (nicht für mich)Habs jetzt verstenden ^^. Ich muss also noch POST abfangen, und die Daten dann weiterleiten.
Ich lasse den Proxy natürlich nicht auf meinem eigenen Rechner laufen, wenn ich ihn verwenden will :D.
Ich habe da noch ein Problem. Web.de google.de, dieses Forum.. lädt wunderbar. Nur.. wenn ich z.B. microsoft.de ansurfe dann lädt der Proxy die Date xx.dll herunter, was offensichtlich eine Programm, welches Serverseitig arbeitet und mit GET ANGEFORDERT wird. verstehe ich nicht.
das selbe bei .php Dateien.
Wenn ich testserver.de/wasauchimmer.php?aktion=löschen aufrufe, dann will er auf die wasauchimmer.php herunterladen.
GET http://127.0.0.1/favicon.ico HTTP/1.1
kann er leider auch nicht verarbeiten. Aber nur manchmal.
Ich glaube ich muss schauen, ob ".php?" oder ".dll?" in der URL ist und den Proxy diese URL einfach aufrufen lassen oder?
Aktueller Code mit JPEG-Komprimierung (Funktioniert bis auf das Oben genannte Problem):
client = tidhttpif(fertig == 1) { fertig = 0; Memo1->Text = AThread->Connection->ReadLn(); // WENN GET, DANN DATEI HERUNTERLADEN UND AN CLIENTRECHNER WEITERLEITEN if(Memo1->Text.c_str()[0] == 'G'){ if(Memo1->Text.c_str()[1] == 'E'){ if(Memo1->Text.c_str()[2] == 'T'){ if(Memo1->Text.c_str()[3] == ' '){ // url auslesen String s= Memo1->Lines->Strings[0]; int durchlauf = 1, akt_pos = 0; String s_neu[100]; while (durchlauf <= s.Length()) { if ((String)s[durchlauf] == (String)" ") { akt_pos++; durchlauf++; } else { s_neu[akt_pos] +=s[durchlauf]; durchlauf++; } } s_neu[1]; // HIER IST DIE ANGEFORDERTE URL Label1->Caption = "Connecting to" + s_neu[1]; try{ // -> DATEI HERUNTERLANDEN TFileStream* fsDest=new TFileStream(".//files//datei.jpg",fmCreate); status->Caption = "lade herunter..."; client->Get(s_neu[1],fsDest); delete fsDest; // HIER NUN DIE KOMPRIMIERFUNKTION!!!! RichEdit1->Lines->LoadFromFile(".//files//datei.jpg"); // DATEI ZUM ÜBERPRÜFEN LADEN if(RichEdit1->Text.c_str()[0] == 'ÿ'){ // if(RichEdit1->Text.c_str()[1] == 'Ø'){ // if(RichEdit1->Text.c_str()[2] == 'ÿ'){ // WENN JPEG DATEI, DANN VERKLEINERN! if(RichEdit1->Text.c_str()[3] == 'à'){ // TJPEGImage *jpg = new TJPEGImage(); try { jpg->LoadFromFile(".//files//datei.jpg"); jpg->CompressionQuality = 1; // 1..100 jpg->DIBNeeded(); jpg->Compress(); jpg->SaveToFile(".//files//datei.jpg"); } catch ( ... ) { ShowMessage("Compression error."); } delete jpg; }}}} status->Caption = "sende daten..."; AThread->Connection->WriteFile(".//files//datei.jpg"); AThread->Connection->Disconnect(); } catch(...) {Memo3->Lines->Add(s_neu[1]); AThread->Connection->Disconnect();} //}}}} fertig = 1; }
-
Kann mich nur wiederholen -> mit so einer Programmierung
RichEdit1->Lines->LoadFromFile(".//files//datei.jpg"); // DATEI ZUM ÜBERPRÜFEN LADEN if(RichEdit1->Text.c_str()[0] == 'ÿ'){ // if(RichEdit1->Text.c_str()[1] == 'Ø'){ // if(RichEdit1->Text.c_str()[2] == 'ÿ'){ // WENN JPEG DATEI, DANN VERKLEINERN! if(RichEdit1->Text.c_str()[3] == 'à'){ist es kein Wunder wenn alles dauert. Nimm dir ein weiniger komplexes Thema und fange mit den Grundlagen an.
Im übrigen werden bei DFÜ Verbindungen (Modem,ISDN) schon Komprimierungen eingesetzt. Es gibt auch irgendwo eine OpenSource Proxy Projekt.
-
Ja, mit der Erkennung des Dateityps habe ich jetzt auch schon gepeilt...
Jetzt gehts auch schneller. Werde mich mal nach einem os proxy umschauen.
Ich will das Surfen jedoch noch schneller machen als mit komprimierung.
Eine gezipte Webseite ist nur 1/3 so groß ^^
-
Im Grunde möchte ich ja nur, dass das Surfen beschleunigt wird.
HTML geht mit ISDN schnell genug.
Ich versuche jetzt mal Einen Clienten/Proxy zu Programmieren der auf dem Clientrechner läuft und Bilddateien abfängt und die Anforderung an der Server sendet, der diese dann komprimiert sendet. Naja, dann könnte ich eigentlich auch die ganze Seite komprimieren...
-
So habe mir jetzt map die mappedporttcp indi komponente und das beispiel angesehen
-
Mist alt+s ged...
Nur leider ist bei der Komponente nichts angegeben ausser, dass auf borland.com weitergeleitet wird.
wie kann ich nun Einfluss auf die vom server kommenden daten nehmen?
Ich muss ja als host den angeforderten eintragen.
Wenn ich aber bei onconnect athread->connection->readln(); mache bekomme ich zwar den request aber dann gehts nicht weiter...
-
ich weiß ich sollte mich hier eigentlich nicht zu Wort melden, da ich auch nicht DIE Leuchte bin, aber...
mag sein dass es wegen dem fehlenden restcode ist, aber
if(fertig == 1) { ... fertig = 0; ... fertig = 1; }
kanns sein dass du an diesen Stellen selber nicht weißt was du machst? "fertig" wird in der gesamten Anweisung nie eingesetzt also brauchst du auch nicht den wert 2 mal ändern.Ich glaube (is wie immer nur geraten ^^) dass Christian auf sowas hinaus wollte:
irgendeinString = RichEdit1->Text.c_str(); if(irgendeinString == "GET "){...}Im übrigen werden bei DFÜ Verbindungen (Modem,ISDN) schon Komprimierungen eingesetzt.
Der Punkt in diesem Fall ist, dass die JPEG auf denen er in seinem Code rumreitet eh schon komprimiert sind und lediglich eine Qualitätsreduzierung - die eine Abbildung u.U. unbrauchbar macht und nicht umkehrbar ist - irgendwas bewirkt.
Eine gezipte Webseite ist nur 1/3 so groß ^^
dafür musst du sie aber auch erst zippen(nicht *.zip sondern richtiges komprimieren ^^), übertragen und wieder extrahieren. Wenn du eine PHP Seite zum Beispiel komprimieren willst, ist das nen ziemlich ... ich sage mal blödes vorhaben, weil du, wenn der Webdesigner nachgedacht hat, erstmal auf den buffer warten darfst - vorher bekommt dein Proxygelöt die Seite nicht. Wenn die Seite auf dem Server komplett durchn PHP-Parser is, wird der buffer gesendet bzw. geflusht und dann gehst du noch bei und komprimierst und dein Ziel darf dann dekomprieren (wie eigentlich?) während der Nutzer davor schon pennt...
Ganz ehrlich denk nochmal ohne Euphorie und mit dem Gedanken die Welt zu revolutionieren darüber nach ob deine Idee wirklich so sinnvoll ist.
-
kleine Korrektur
Wenn die Seite (...)
ich meine das jeweils angeforderte Skript.