2011-05-29 43 views
0

我一直在爲我公司開發家長控制軟件程序,但遇到了問題。該軟件使用存儲在MySQL數據庫中的策略列表來確定是否阻止網站。它使用本地代理。每次訪問網站時,代理都會將該網站發送到服務器,然後服務器根據用戶的設置確定網站是否應該被阻止。該軟件已完成,但有一個主要問題。將地址發送到服務器需要很長時間,服務器返回代理的響應時間太長。使用該軟件時,瀏覽速度會變慢很多。有一個更好的方法嗎?家長控制軟件

代理是用Python編寫的,服務器端的所有內容都是用PHP完成的。

+0

什麼部分花費很長時間?查詢本身?網絡時間過高?網址解析? – Mat 2011-05-29 18:12:24

+0

@Matt對數據庫的查詢運行順利。它似乎是從客戶端傳遞URL到服務器的時間太長。我使用POST和GET的urllib(不是兩者之間有太大區別),也使用POST和GET的httplib。他們都沒有足夠快的工作。 – 2011-05-29 18:15:13

+0

您是通過網站或網址按網址發送網址嗎?如果它是逐個站點,它不應該影響速度,因爲您可以在最後緩存響應。 – JohnP 2011-05-29 18:15:28

回答

1

您是否在客戶端本地緩存服務器的響應?如果不是,你應該 - 它應該大大加快速度。

如果你問你的服務器每個URL,你應該只詢問域名,以便每個站點的請求數量從多個下降到只有一個。 (除非你只想禁止其中一部分的域名,但似乎不太可能。)

+0

因此,我緩存每個訪問域的響應,從而加快瀏覽速度並限制發送到服務器的URL。應該如何將響應緩存在客戶端? – 2011-05-29 18:33:05

+0

我只是將它們添加到'dict'中。將它們存儲在磁盤上似乎過度殺毒,並且容易受到篡改。數據不會很大,除非有人訪問了一百萬個獨立的域名。 (當它達到某個閾值時,你總是可以隨意剔除一半的條目。) – RichieHindle 2011-05-29 18:36:40

+0

@RichieHindle,我明白了...非常好的主意。我會試一試並回來。 – 2011-05-29 18:43:59