2012-12-19 60 views
4

我試圖將整個response.body保存到memcached。我做它像這樣:用Rails.cache.write設置原始值

Rails.cache.write(request.headers['HTTP_X_MEMCACHED_KEY'], response.body) 

的問題是,它前添加一些垃圾值:

o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1355928410.584484:@value"GsI";s<!DOCTYPE html>... 

我試圖通過:raw => trueRails.cache.write,但它返回false,並且不將值存入memcached。我認爲它失敗了,因爲response.body沒有正確逃脫。

我也試過這樣:

Rails.cache.write(request.headers['HTTP_X_MEMCACHED_KEY'], Marshal.dump(response.body), :raw => true) 

它的工作原理,但還是有一些垃圾的價值:

I"fD<!DOCTYPE html>... 

如何把一個乾淨的值到memcached的?

回答

1

看來memcached無法緩存數據,因爲在response.body中未轉義的unicode字符。

現在我通過response.body.bytes.to_a.map(&:chr).join作爲值,它工作正常,但我仍然想知道它是否是最好的解決方案。

+0

你有沒有找到更好的解決方案?我想擺脫那些隨機值。 – Strawberry