4

我正在尝试将整个 response.body 保存到 memcached。我这样做是这样的:

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?

4

2 回答 2

1

似乎 memcached 无法缓存数据,因为response.body.

现在我response.body.bytes.to_a.map(&:chr).join作为值传递,它工作正常,但我仍然想知道它是否是最好的解决方案。

于 2012-12-21T10:38:07.650 回答
0

写作response.body.force_encoding('ASCII-8BIT')可能是一个解决方案

于 2019-11-06T18:36:24.497 回答