- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Rails 3.1.2 项目中,我使用 ActiveRecord 作为 I18n.backend。我想在 MemCache 中缓存值。但我的开发环境和测试环境之间存在奇怪的行为差异。
我的“config/initializers/i18n.rb”
# https://github.com/svenfuchs/i18n-active_record/blob/master/lib/i18n/backend/active_record/translation.rb
require 'i18n/backend/active_record'
require 'i18n_cache_backend'
I18n.default_locale = :en
I18n.backend.class.send(:include, I18n::Backend::Fallbacks)
active_record_backend = I18n::Backend::ActiveRecord.new
active_record_backend.class.send(:include, I18n::Backend::Fallbacks)
I18n::Backend::ActiveRecord.send :include, I18n::Backend::Cache
I18n.cache_store = Rails.application.config.i18n_cache_store
I18n.backend = I18n::Backend::Chain.new(active_record_backend, I18n.backend)
我的“lib/i18n_cache_backend”,覆盖了 :store_translation 方法来清理缓存。
module I18n::Backend::Cache
def store_translations(locale, data, options = {})
flatten_keys(data, true) do |key, value|
c_key = cache_key(locale, key.to_s, options)
I18n.cache_store.delete c_key
end
super
end
end
在“config/environments/development.rb”中我有:
config.i18n_cache_store = ActiveSupport::Cache.lookup_store(:mem_cache_store,
'localhost', :namespace => "development")
在“config/environments/beta.rb”中我有:
config.i18n_cache_store = ActiveSupport::Cache.lookup_store(:mem_cache_store,
'memcache.v.l', :namespace => "beta")
在开发 Rails 控制台中:
ruby-1.8.7-p352 :008 > I18n.cache_store.clear
=> [<MemCache::Server: localhost:11211 [1] (CONNECTED)>]
ruby-1.8.7-p352 :009 > helper.t 'main.wire'
[SQL QUERY GOES HERE]
=> "Wire"
ruby-1.8.7-p352 :010 > helper.t 'main.wire'
=> "Wire"
ruby-1.8.7-p352 :011 > I18n.backend.store_translations(:en, {:main => {:wire => "foo bar baz"}}, {:rescue_format=>:html})
[SQL UPDATES GOES HERE]
=> {:"main.wire"=>"foo bar baz"}
ruby-1.8.7-p352 :012 > helper.t 'main.wire'
[SQL QUERY GOES HERE]
=> "foo bar baz"
ruby-1.8.7-p352 :013 > helper.t 'main.wire'
=> "foo bar baz"
在 beta 环境 Rails 控制台中:
ruby-1.8.7-p352 :001 > I18n.cache_store.clear
=> [<MemCache::Server: memcache.v.l:11211 [1] (CONNECTED)>]
ruby-1.8.7-p352 :002 > helper.t 'main.wire'
[SQL QUERY GOES HERE]
=> "Wire"
ruby-1.8.7-p352 :003 > helper.t 'main.wire'
=> "Wire"
ruby-1.8.7-p352 :004 > I18n.backend.store_translations(:en, {:main => {:wire => "foo bar baz"}}, {:rescue_format=>:html})
[SQL UPDATES GOES HERE]
=> {:"main.wire"=>"foo bar baz"}
ruby-1.8.7-p352 :005 > helper.t 'main.wire'
=> "Wire"
ruby-1.8.7-p352 :006 > helper.t 'main.wire'
=> "Wire"
ruby-1.8.7-p352 :007 > I18n.cache_store.clear
=> [<MemCache::Server: memcache.v.l:11211 [1] (CONNECTED)>]
ruby-1.8.7-p352 :008 > helper.t 'main.wire'
[SQL QUERY GOES HERE]
=> "foo bar baz"
ruby-1.8.7-p352 :009 > helper.t 'main.wire'
=> "foo bar baz"
有人有想法吗?在开发中,翻译缓存在每次 :store_translation 之后 clrear,在 beta 中,除非我执行 I18n.cache_store.clear,否则不会刷新缓存值
最佳答案
我找到了解决问题的方法。在测试版和生产环境中,有 config.i18n.fallbacks = true ,其他选项设置的结果传递给 ActionView::Helpers::TranslationHelper#translate helper 中的 I18n.translate。
我曾经做过
I18n.backend.store_translations(:en, {:main => {:wire => "foo bar baz"}}, {:rescue_format=>:html})
但正确的是:
I18n.backend.store_translations(:en, {:main => {:wire => "foo bar baz"}}, {:rescue_format=>:html, :fallback => true})
关于ruby-on-rails - Rails 3.1 i18n 和 memcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473171/
memcached 能否充分利用多核?或者有什么办法可以调整这个? 最佳答案 默认情况下,memcached 是多线程的,并且在使许多内核饱和时没有问题。在更大规模的并行机器(例如 256 核 CMT
有没有办法根据通配符键使内存缓存中的条目无效? 因此,如果我有以下内存缓存键: data/1 data/2 data/3 有没有一种方法可以使这些 key 失效,例如 data/* ?一口气清除一堆陈
Memcache 可以配置为使用磁盘存储而不是 RAM 吗? 我在 High IO Amazon EC2 实例上运行 Memcache Server。该实例有 2TB 的 SSD 存储可用。我可以将
memcached 的最大 key 过期时间是多少? 如果我不提供过期时间并且缓存已满,会发生什么? 最佳答案 您可以通过提供 Unix 时间戳而不是天数来将 key 过期设置为某个日期。该日期可以是
我有一个运行 php/mysql 的网站。该应用程序将被多次“复制”。每个实例都会获得自己的数据库、一组 php 文件(通配符)域,您明白了。 现在应用程序的某些部分是使用 memcache 进行缓存
是否可以根据某些正则表达式获取 memcached key 列表?我知道一种解决方案是将 key 存储在数据库中,并在需要删除这些 key 时获取列表。这意味着,它将给数据库带来额外的成本。 我想知道
我们发现使用我们的 memcache 时,一些键往往会丢失。为了调试,我使用命令 stats cachedump 输出是这样的: ITEM key-stuff-123-mlgtr-tmura [5
从 Network Solutions 移至托管站点,出现错误 fatal error :第 6 行 上/data/.../include/connect.inc 中未找到类“Memcache” 我该
我遵循了这个 tutorial 中的说明关于如何安装 nginx、php 和 mysql,包括 php5-memcache。 我想知道我是否还需要安装没有“php5”前缀的 memcache 或 me
我在 ubuntu 12.04 上运行 apache/php/memcached 我设置的 key 在过期后仍然有效。我们使用的代码与我们从中迁移的内存缓存 PAAS 的代码相同。 我如何确认过期实际
假设我在开始时有两个 memcached 节点( 节点 A, B ),当我添加一个新的 时节点 C ,部分键被重新映射,并且由于一致散列只有其中一些。 让我们假设一个键为“ foo ”的值原来在服务器
真的,我只想知道memcached中的slab是什么。如果有认识的同事能回答我的话会更好。 谢谢你的回答... 最佳答案 长时间运行的应用程序(如 memcached)会遇到内存碎片问题,服务运行时间
在 memcached 概述中 here 它说: Memcached servers are generally unaware of each other. There is no crosstal
当您在 memcached 中放入一个值时,您可以设置一个过期时间。 但是,当您增加一个值时,您不能(至少不是来自 PHP )设置新的到期时间。 我的问题:到期时间是否在递增时重置为其初始值?或者它没
我在我的 centos 服务器上使用 memcached,我的项目很大并且有超过 1MB 的对象我需要保存到 memcached,好吧,我不能!因为 max_item_size 是 1MB,无论如何要
我尝试使用本教程在 MAMP - Snow Leopard 10.6.2 中安装 memcached: Setup a Memcached-Enabled MAMP Sandbox Environme
我试图添加的方式 -l 11211 -l 11212 在 memcached conf 文件中。但它只是在听第一个,即 1121 最佳答案 首先我使用了 mikewied 的解决方案,但后来我遇到了自
我希望记录我的 memcached 服务器中正在进行的所有事件。所有读取和写入。 这将用作云中许多远程 php 应用程序的分布式守护程序,并且需要一种通过 SSH 登录并检查守护程序上正在进行的事件的
我在使用 memcached 时遇到了一些问题,我的一个想法是它可能已经在我尝试运行它的端口上运行,由我们网络上的其他用户启动。有没有办法知道当前正在使用哪些 memcached 端口? 最佳答案 要
运行 4 个 .5GB 内存缓存服务器或运行一个 2GB 实例有什么区别吗? 运行多个实例有什么好处吗? 最佳答案 如果一个实例失败,您仍然可以享受使用缓存的优势。如果您使用一致性哈希将相同的数据引入
我是一名优秀的程序员,十分优秀!