July Tech Festa 2018 (https://2018.techfesta.jp/)
Ruby on Railsで特定の値やクエリ結果をキャッシュするしくみとしてRails.cacheを紹介します。 この機能を使うとや有効期限を設定したり、キャッシュ内容を圧縮できます 🏈 メソッドRails.cache.fetchRails.cache.fetchはキャッシュされた値を取得するメソッドです。 ブロックを渡すことで、キャッシュがなかった場合は指定されたデータをキャッシュにセットして返すことができます。 def cached_title Rails.cache.fetch("/model/article/title/#{id}", expired_in: 1.hour) do Article.find(id).title end end
こんにちは、hachi8833です。BigBinaryシリーズは、Rails 5のキャッシュに関する翻訳記事をお送りいたします。元記事はRails 5リリース直前の頃のものなので、Rails 5.1で変わっている部分についても反映しました。 概要 原文: Caching result sets and collection in Rails 5(米国BigBinary社のブログより) 原文公開日: 2016/02/02 著者: Mohit Natoo 訳文ではバージョンやリンクなどを現時点の内容に更新しています。 Railsアプリを開発中に、Railsガイドに記載されているRails のキャッシュを使ってパフォーマンスを向上させたくなることがあります。Rails 5からは次のメソッドでレコードのコレクションをキャッシュできるようになります。 ActiveRecord::Relation.c
こんにちは、バックエンドエンジニアのjoeです。主にAPIを担当しています。 VASILYのAPIでは、速度向上のためにModelオブジェクトをキャッシュしています。 最近、Modelキャッシュの仕組みを実装したので、その実装方法を紹介します。また、既存ライブラリとの比較についても書きたいと思います。 Modelキャッシュとは Modelキャッシュを簡単に言うと、下記の結果をキャッシュすることです。 > Item.find(1) => #<Item:0x007fdfe398a678> このように、1レコード単位のActiveRecordをキャッシュすることを本記事ではModelキャッシュと呼びます。ActiveRecordをキャッシュすることで、データベースへの読み込み回数を減らし、レスポンス速度を向上させることができます。 既存ライブラリの紹介と問題点 Modelキャッシュを実現できるG
This guide is an introduction to speeding up your Rails application with caching. Caching means to store content generated during the request-response cycle and to reuse it when responding to similar requests. Caching is often the most effective way to boost an application's performance. Through caching, websites running on a single server with a single database can sustain a load of thousands of
Railsのsession_storeやcache_storeとして、memcachedを使うことはよくあると思います。 今回は、memcachedのRuby用クライアントgem, memcache-clientやdalliにて、Passengerやunicornのfork後の初期化をきちんと書かないと、悲惨なことになるというお話です。 ※他のgemやmemcached以外でも当てはまります。 必要な初期化処理 以下の処理を、config/environments/production.rbや、config/initializers/session_store.rbなど、どこでも良いので初期化コードに書いておく必要があります。 dalliを利用している場合 https://github.com/mdesjardins/dalli/tree/ # passengerの場合 if define
2015-02-11 Rails のフラグメントキャッシュで使われるキーについて Rails FragmentCache 試したバージョン: Rails 2.1.5 Railsにはテンプレートの一部をキャッシュ化するフラグメントキャッシュという機能があります。使い方は『Ruby on Rails Guides』の「Caching with Rails: An overview — Ruby on Rails Guides」という記事と、『ASCIIcasts』の「ASCIIcasts - “Episode 387 - Cache Digests”」という記事で詳しく説明されています。(『Ruby on Rails Guides』には英語の記事しかありませんが、『ASCIIcasts』には日本語の記事があります。)キャッシュ名を指定する方法が色々とありますが、キャッシュ名の指定の仕方によっ
本記事は英語版ブログで公開された記事の翻訳版です。 パフォーマンスはどんなアプリケーション開発者にとっても大きな懸念です。問題なのは、人は往々にして、実際にパフォーマンスが下がりはじめ懸念すべき事態になるまで問題を放置しがちだという点です。パフォーマンス対策は前もって講じておくべきもので、ほころびが出はじめてから取りかかるのでは遅すぎます。たまのレビューで済ませるのではなく、プロセスの一環に組み込むことが必要です。この記事では、パフォーマンス向上のために開発者が自分でできるいくつかの対策について見ていきます。まずはデータベースです。 データベースのパフォーマンス Railsを使う場合、ActiveRecordやDataMapperといったORMを使えばアプリケーションからのデータ取得を楽にできますが、それだけにデータベースとのやりとりを改善する最適化やリファクタリングの重要性をおろそかにし
Google+ボタン はてなブックマークボタン 更新日時: 2014年01月11日(土) 作成日時: 2013年11月12日(火) 前の記事 / 次の記事 Rails4では従来の page cache や action cache は廃止され、 デフォルトのキャッシュ機構としては、Rails3までの fragment cache のようなものだけが使える。 Rails4のこのキャッシュ機構は今のところ RussianDollCaching、cache_digests、fragment cache 等と 呼ばれているみたいだけど指し示すものは全部同じもの。 というか最初別々の何かだと思ってて無駄に嵌まった。 Rails4で内部的に使われているgemが、 従来のRailsにおける fragment cache を進化させた cache_digests であり、 cache_digestsの仕組
昨今はiOS、Android等のスマホ向けネィティブアプリやフロントエンドJavaScript向けの「サーバ側」機能として、RESTfulなHTTPプロトコルベースの Web API を作る機会が多いかと思います。 その際は PHP や Perl、Python、Ruby など諸々の言語でAPIスクリプトを作成しますが、サーバに対するAPIリクエスト数が増えてくるとサーバの負荷も増え、今度は負荷対策に悩まされることになってきます。 WEBサーバとして Apache を利用している場合は、mod_cache モジュールを利用して簡単にAPIレスポンスをApacheレイヤーにキャッシュできますので、今回はその方法を紹介します! 要点 下記に長々と設定例を書きますが、簡単に要点を説明すると、 Apacheの設定で、mod_cacheモジュールの有効化とモジュールの初期設定をする キャッシュさせたい
nginx+memcachedがめちゃ気になったので試してみました。 元ネタは下記です。 A 53,900% speedup: Nginx, Drupal, and Memcache bring concurrency up and page load time way down | TechnoSophos nginxをリバースプロキシに利用した構成で、バックエンドの出力をmemcachedにキャッシュしておけば、次回リクエストではnginxがそのキャッシュを読み取ってそのまま出力してくれます。 つまりバックエンドにリクエストを経由させずにnginxから即出力するのでかなりの高速化が見込めるという優れものです。 リンク先ではバックエンドにDrupalを利用していたのですが、ここではCakePHPを利用してみます。 1. 全体構成 リバースプロキシにnginx(Port: 80)を使い、バ
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
一部の人に鳥の人として認識されているyamaokaです。 フォト蔵では最近Varnishをコンテンツキャッシュに利用しています。 具体的には、写真のサムネイルなどの静的なコンテンツをキャッシュするために使っていたりします。 Varnishはコンテンツキャッシュ機能を備えたHTTPアクセラレータです。 同じような目的に使われるプロダクトとしてSquidがありますが、 それよりも高速に効率よく動作することを売りにしています。 サーバーへのインストールについてはCentOSなどRed Hat系のLinuxであれば EPELからrpmを入手するか、 ソースを展開するとredhatディレクトリにspecファイルが用意されているので そちらを利用すれば最新版のrpmが作成可能です。 以下、rpmを使ってインストールしたものとして話を進めます。 起動設定は/etc/sysconfig/varnishです
#squidの動作させるユーザ・グループ cache_effective_user squid cache_effective_group nogroup #squidはcache_memの約3倍のメモリを使います cache_mem 64 MB #diskdはsquidと別スレッドでディスクに書込みします。複数cpuに最適値。最初の100は使用ディスク容量(MB単位) cache_dir diskd /var/cache/squid 100 16 256 #半接続で落ちたクライアントをすぐに切る half_closed_clients off #再起動/終了時の待ち時間 shutdown_lifetime 3 seconds #メモリに読み込むキャッシュオブジェクトの最大容量 maximum_object_size_in_memory 5 MB #ステータスページのパスワードを
repcachedについて repcachedとは、memcachedにデータのレプリケーション機能を追加実装したものです。 memcachedは、以下のようなところによく使われると思います。 一時的なデータの保存場所として キャッシュを保存する場所として RDBMSのデータのキャッシュ 生成したページデータのキャッシュ いずれの場合も消えていいデータなので、万が一memcachedがダウンしても問題はないはずです。 しかし、影響が全くないわけではありません。 例えば、MySQLのデータをmemcachedでキャッシュしている場合、memcachedがダウンしている間は直接MySQLにアクセスがいくことになりDBサーバの負荷が上がります。また、memcachedを再起動してキャッシュが失われた場合は、再びキャッシュが溜まるまではDBサーバに負荷がかかることになってしまいます。 このように
平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 本件に関するお問い合わせはこちらよりお願いいたします。
Caching is very important and really pays off in big internet applications. When you cache the data you're fetching from the database, in a lot of cases the load on your servers can be reduced enormously. One way of caching, is simply storing the results of your database queries in files.. Opening a file and unserializing is often a lot faster than doing an expensive SELECT query with multiple jo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く