最近搞一個技術實現:將頁面的html源碼為value,將頁面的url作為key保存到memcached里。然后利用nginx+memcached模塊進行訪問。可以大大提高web系統的性能和速度。
實現的過程中遇到一個困難:從memcached里取出來的value有時候是亂碼。經過大量的試驗,我發現了一個規律:頁面大小不超過64k的,取出來的值不存在亂碼問題。一旦超過這個值,就變成了亂碼。看來64k是個很敏感的大小。但是memcached的存放單個值的大小最大值是1M。64kb還小的很啊。於是,我試試直接用memcached的服務端命令把600kb的value存入到memcached里,結果是成功了。說明問題是在客戶端了。
我查了一下memcached的客戶端(memcached client for java),其中有個方法setCompressEnable(boolean compressEnable),意思是超過多少大小(通過這個setCompressThreshold(long compressThreshold)方法設置大小)就進行壓縮。
於是我設置了一下mcc.setCompressEnable(false);
再次試驗,成功