Andreas Korthaus: HTTP-Proxyserver programmieren

Beitrag lesen

Hi!

Naja, irgendwie ist es seltsam, im IE laufen wirklch alle Seiten über den proxy, nur der Mozilla macht bei alten Seite nichts, es bleibt einfach weiß. Naja, und das Forum ist schon ein dicker Happen, das durchaufen der Startdatei dauert ca. 20 Sekunden bei voller CPU-Auslastung.

Sind ca. 320 KB. Was ja nun wirklich nicht viel ist, mit PHP habe ich das _erheblich_ schneller durchlaufen. ABer in Java muss das doch auch schneller gehen. Vielleicht versuche ich es mal mit StringBuffer, nur gibt es hierfür kein replaceAll()... wobei, wenn ich die originale Content-Length habe, kann ich ja auch direkt mit read() alles auf einmal lesen, wobei ich vom selfserver ausgerechnet das nicht empfange. Hm.

Also ich habe es jetzt nal auf stingBuffer umgestellt, udn das ist auf alle Fälle ein großer Schritt nach vorne:

Hierfür habe ich mir eine eigene replaceAll Methode geschrieben:

private StringBuffer replaceAll (StringBuffer s , String search, String replace ) {

int start = 0, pos = 0;
        StringBuffer result = new StringBuffer (s.length());

while ( ( pos = s.indexOf( search, start ) ) >= 0 ) {

s.replace(pos, pos + search.length(), replace);
        }

return s;
    }

while ((data = readLine(from_serv)) != null) {
    data_buffer.append(data + "\r\n");
}
replaced_html = replaceAll(data_buffer, "Kaltschrank", "Kaltschrank");
        header.append("Content-Length: " + replaced_html.length() + "\r\n");
header.append("Connection: close\r\n");
header.append("\r\n");

out.write(header.toString().getBytes(), 0, header.length());
out.write(replaced_html.toString().getBytes(), 0, replaced_html.length();

So. Meint Ihr ich kann das noch weiter verbessern? Denn richtig flott ist das noch lange nicht.  Aber der Unterschied zur String-Methode ist fast unglaublich, das ist sicher 5 mal schneller!

Grüße
Andreas