Packet classification is a technique that classifies the flows into different classes. Nowadays the packet classification plays an important role for many new Internet services. Rectangle search is a well-known packet classification scheme which is based on multiple hash accesses for different filter length. It shows good scalability with respect to the number of filters; however, the lookup performance is not fast enough. For example, through experiments, each packet classification takes about 40 hash accesses in a 100,000-filter database and each hash access may take more than one memory access. Obviously, this is not capable to provide gigabits throughput. We propose an efficient scheme to improve the rectangle search. The scheme consists of two parts. In the first part, the "tuple reduction algorithm" based on filter duplication is proposed. In spite of the increased number of filters, the pre-computation information is dramatically reduced. The performance has increased two times while only about one quarter storage is required. Secondly, we propose a novel "lookahead caching" which can further improve the lookup performance. The basic idea is to find out the "un-matched" case for each incoming packet, thus it is different from the traditional caching mechanism. The experimental results indicate that the proposed scheme can fulfill OC-192 throughput.