Tag: 缓存

在memcached中存储ActiveRecord对象的最佳方法是什么?

目前在memcached中存储ActiveRecord对象存在两个问题。 未定义的类/模块问题( Google搜索 )。 从我读过的内容来看,这仍然是一个没有人有真正好的解决方案的错误。 cache_fu插件可能是最好的解决方案,将其检索调用包装在试图捕获此错误的块中,解析消息并尝试加载未定义的类/模块。 臭名昭着的LH票#1339( LH票 )。 只有在cache_classes设置为FALSE(开发,测试)时才会发生此错误。 谷歌搜索几周后,我仍然没有找到一个很好的技术来存储AR实例在memcached中,而不必处理上面列出的2个问题。 我还没有尝试过的想法是从实例中删除属性作为字符串(只是AR在进行类型转换之前如何从DB接收它们),将它们存储在memcached中然后从缓存中检索,以某种方式实例化AR使用这些值的对象。 这可能吗? 如果是这样,最好的方法是什么? 我只是在寻找其他Rails开发人员解决这个问题的方法。

容易出错的代码随机开始工作,但在刷新后再次破坏

我正在尝试安装“selectize-rails”gem。 我遇到了很多麻烦( TypeError:$(…)。selectize不是一个函数 )所以我放弃了一段时间并且处理不相关的事情。 然后我回到它,gem突然工作,虽然我改变的代码都没有与它相关。 然后,我更改了一行代码并刷新了页面以查看结果,并再次在之前的Web控制台中显示相同的错误: TypeError: $(…).selectize is not a function 之后,这就是我所做的一切:1)在文本编辑器中按“返回”以恢复更改,2)保存文档,3)刷新页面。 并且,错误仍然存​​在,尽管完全相同的代码仅在几秒钟前工作。 有谁知道这有可能吗? 这是不起作用的代码块,然后突然开始工作,然后再次停止: $(document).ready(function() { console.log( typeof $.fn.selectize === ‘function’); // true console.log( $(‘#select-to’).length === 1 ); // true var REGEX_EMAIL = ‘([a-z0-9!#$%&\’*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\’*+/=?^_`{|}~-]+)*@’ + ‘(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)’; $(‘#select-to’).selectize({ persist: false, maxItems: null, valueField: ’email’, labelField: ‘name’, searchField: [‘name’, ’email’], options: [ {email: ‘brian@thirdroute.com’, name: […]

缓存在路轨的俄国玩偶

我听说DHH和其他伟大的37Signal人谈了很多俄罗斯娃娃缓存,我理解它的概念,但我真的不知道如何将它应用到我的代码中。 你会怎么样? 新编辑:如何将gem应用于一段包含大量if语句的代码? “avatar topimg” %> “description”) %> “upload icon-upload” %> “description”) %> “upload icon-star” unless current_user.followees_by_type(“design”).blank? %> “description”) unless current_user.followees_by_type(“design”).blank? %> “invites_count”) unless current_user.current_invites “invite icon-plus “+(“blue” unless current_user.current_invites == 0).to_s unless current_user.current_invites “description”) unless current_user.current_invites “activity_count”) unless activity == 0 %> “upload icon-activity “+(“blue” unless activity == 0).to_s unless activity == 0 %> […]

如何强制rails SQL缓存清除?

我正在运行rails db:reset db:migrate在我的测试脚本(直接导入和与模型接口)之间的测试之间进行rails db:reset db:migrate ,但是更改不会反映在第一个测试和第二个测试之间。 更具体地说,第一次测试引起的变化并没有像它们应该的那样逆转。 当我从外部(从shell)连接到数据库时,我发现该命令已生效。 我已经看过这个问题,但解决方案没有效果(确实,没有错误,但也没有明显的效果)。 如何强制我的测试脚本清除sqlite状态的内存缓存? 重现问题的完整步骤。 创建一个新的rails应用程序。 rails new MWE 将以下内容放在db/schema.rb ActiveRecord::Schema.define(version: 20140408213603) do create_table “users”, force: true do |t| t.string “username” end end 将以下内容放在db/seed.rb 。 User.create(username: ‘user1’) User.create(username: ‘user2’) User.create(username: ‘user3’) 将以下内容放在Gemfile 。 source ‘https://rubygems.org’ gem ‘rails’, ‘4.0.0’ gem ‘sqlite3’ gem ‘protected_attributes’ 将以下内容放在名为app/models/user.rb的文件中。 class User < ActiveRecord::Base attr_accessible :username […]

HTML5缓存和授权问题

将HTML5缓存添加到rails on backbone中编写的单页应用程序后,我遇到了问题。 浏览器(chrome)没有重新加载html,这会以两种方式导致问题: 1)骨干的骨架html有时会发生变化 – 至少让骨干知道用户已登录。但是如果没有加载html,应用程序就不知道(例如刷新后)。 我可以在页面加载时查询服务器,但这是我跳过以避免的另一个请求。 此外,这将强制将所有permisions逻辑移动到客户端 – 因此要么从服务器复制cancan设置或将其嵌入到html中 – 我们遇到上述问题。 2)Rails的csrf标记在html中,它们也不会改变 – 导致任何ajaxpost无效。 对于这个,我不知道该怎么做。 从我读到的csrf令牌是为会话生成的,所以也许在登录/注销时我可以用js更新它。 然而,在哪里得到它,它会工作吗?

反向代理混淆

目前我使用nginx + passenger来提供我的rails应用程序。 我一直在对反向代理进行一些研究,并且弹出一些名称(主要是鱿鱼,清漆和nginx)。 现在,如果我使用nginx作为我的Web服务器,我可以将它用作我的反向代理吗? 一般意义上,大多数站点使用nginx代理静态内容和apache / mongrel或类似的动态内容。 如果我想坚持使用我的nginx,乘客设置,当我引入反向代理时,我的架构会是什么样子? 它会是一个单独的盒子或nginx实例吗? 如果我引入像HAProxy这样的负载均衡器,它会是什么样子? 最后,这些选择在早期有多重要? 所以,如果我最终后悔做出选择(让我们说Varnish,因为它不能很好地与cookie等等),是否容易切换? 谢谢

expires_in max-age缓存控制不起作用

我无法让max-age缓存控件正常工作,我使用expires_in导致“Cache-Control:max-age = 86400,public,must-revalidate”标头。 但是,浏览器仍然将请求发送到服务器,至少它被定义为“304 not modified”,这意味着ETag / If-None-Match标头正常工作。 我已经在我的localhost和heroku上用webrick测试了它,使用chrome 45和Safari。 不,我的开发工具没有打开,并且未选中“禁用缓存”。 我也试图删除expires_in方法调用的“,must_revalidate:true”。 我错过了什么? 以下是Chrome中网络的输出: 常规:远程地址:127.0.0.1:3000请求URL: http ://localtest.me:3000 / api / books请求方法:GET状态代码:304未修改 响应标头: Access-Control-Allow-Origin:* Access-Control-Request-Method:* Cache-Control:max-age = 86400,public,must-revalidate Connection:Keep-Alive Date:Tue,08 Sep 2015 13: 28:01 GMT Etag:W /“1f1b2d0b822830bc74e7c47a116205be”服务器:WEBrick / 1.3.1(Ruby / 2.2.1 / 2015-02-26)X-Content-Type-Options:nosniff X-Frame-Options:SAMEORIGIN X-Request -Id:c70d4715-dcff-4558-85af-9d21556d406a X-Runtime:0.553353 X-Xss-Protection:1; 模式=块 请求标题:接受:text / html,application / xhtml + xml,application […]

开始API缓存

有人能指出我正确的技术与缓存API响应有关。 我已经通过许多现有的问题,指南,post,但某些关键因素不能正常工作。 模型 class Cleartrip include HTTParty debug_output $stdout base_uri “api.staging.cleartrip.com/air/1.0/search” headers ‘X-CT-API-KEY’ => ‘xxxxxxxxxxxxxxxxxxxxxxxxxxx’ format :xml def self.get_flight(url) Rails.cache.fetch(url, :expires => 1.hour) do response = get(url) if response.success? response else raise response.message end end end end 调节器 @flight = Cleartrip.get_flight(“?from=DEL&to=BLR&depart-date=2014-08-10&adults=1&children=0&infants=0”) Development.rb config.cache_classes = false # Do not eager load code on boot. config.eager_load = […]

rails 4缓存过期无效

在我的rails应用程序中,我正在尝试使用嵌套缓存,但是当user.profile.full_name更改时,我的缓存键未到期。 因此,当用户更改他/她的名字时, _profile_product.html.erb显示的full_name仍然是旧名称。 我该如何更换钥匙? 型材/ show.html.erb #this is the profile info and the cache key expires properly when @profile.full_name changes ….. #not nested in the previous cache; #products belonging to the profile are listed with this code under the profile info _profile_products.html.erb _profile_product.html.erb #if I change profile name this one won’t change thanks to the […]

在Rails 4中禁用缓存摘要

我正在将Rails 3应用程序迁移到Rails 4.迁移过程非常顺利,但我遇到的一个大问题是我的旧Rails 3代码使我的缓存过期无效。 我得到的日志如下: Expire fragment views/localhost:3000/cardsets/36?action_suffix=edityes (0.0ms) … Read fragment views/localhost:3000/cardsets/36?action_suffix=edityes/d8034b6e68ba30b5916a2ebb73b68ffe (0.0ms) 事实certificate这是因为Rails 4带来了一种新的时髦缓存,缓存摘要。 最后一个长hex字符串是Rails想要与此缓存片段关联的某些视图的md5摘要。 我相信我不需要缓存摘要。 我的应用程序很快就会更新,通常我可以在更新时清除缓存,因此引用先前部署版本的一段视图代码的缓存片段的概念是无关紧要的。 我看到我可以使用:skip_digest => true标志修改任何给定的cache调用。 此博客文章提到修改大量cache调用以添加:skip_digest 。 但我相信我想将此标志应用于我的应用程序中的每次cache调用。 当然必须有一些方法来普遍禁用缓存摘要?