redis_page 0.1.20 → 0.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffdcff31aad42914f75d7a6de59f61a8168057c9
4
- data.tar.gz: f5dcebef2a715a51e613bf0e55f63c483e87cb5f
3
+ metadata.gz: a06d2e1d0a4a723ce3e9d47a2c7f4484a3522c9b
4
+ data.tar.gz: 3c2a6f6b31396d1557207dc8f8cd20da2d15e9fa
5
5
  SHA512:
6
- metadata.gz: a964d178847d148c10e6230bd363c2886a92536d2441f1963107f23babce690ed0f8729f611660b07bf437e306a38795039d09b3a2104e234eee1e4e1460bf1e
7
- data.tar.gz: 39c8508fe6157a35fe09090ebd4d5b59029e7acfa789a9d28ff370c0053406fa2ac149a7bb4ce7dea6d8e0a31764087021bc83f7c76d55a0477b0d030ac4f0e8
6
+ metadata.gz: 16e73d77c06ad803d4e619b0a63fd5dec38fef56d786ca49cb059a339867109e02b8e63d49acc21d836b2fd92a558a0af418d7fd155c7117f1fca004a3236a8d
7
+ data.tar.gz: 6197bc33d126d55544cf153241f878fd00641703f2f4b1111d738a67e75eb55f83532fce9f3d888f442922b5bc3f27c54c3d8a98a01644f8f149d1615aac6179
@@ -1,4 +1,5 @@
1
1
  require 'active_support/core_ext/class/attribute_accessors'
2
+ require 'zlib'
2
3
 
3
4
  module ActionController
4
5
  module Caching
@@ -12,7 +13,7 @@ module ActionController
12
13
  module ClassMethods
13
14
 
14
15
  def caches_redis_page(*actions)
15
- return unless RedisPage.redis
16
+ return unless (RedisPage.cache_relation_redis && RedisPage.cache_page_redis)
16
17
  options = actions.extract_options!
17
18
 
18
19
  before_filter({only: actions}.merge(options)) do |c|
@@ -28,12 +29,17 @@ module ActionController
28
29
  #path = URI(request.original_url).path
29
30
  path = request.path
30
31
  path = "#{path}-#{@cache_country}" if @cache_country
31
- c.cache_redis_page(response.body, path, options)
32
+ c.cache_redis_page(compress_content(response.body), path, options)
32
33
  c.record_cached_page
33
34
  end
34
35
  end
35
36
  end
36
37
 
38
+ def compress_content(content)
39
+ RedisPage.compress_method == :deflate ? Zlib::Deflate.deflate(content) : content
40
+ end
41
+
42
+ # TODO: 全球化部署时需要将一个页面写到多个redis上去,需要确保: 1. 写入速度快; 2. 确保写入成功;
37
43
  def cache_redis_page(content, path, options = {})
38
44
  key = path
39
45
  text = "[page cache]caching: #{path}"
@@ -42,7 +48,9 @@ module ActionController
42
48
  text = "#{text} in #{namespace}"
43
49
  end
44
50
  Rails.logger.info text
45
- RedisPage.redis.setex(key, RedisPage.config.ttl || 604800, content) # 1 周后失效
51
+ # RedisPage.cache_page_redis.setex(key, RedisPage.config.ttl || 604800, content) # 1 周后失效
52
+ # 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
53
+ RedisPage.cache_page_redis.set(key, content) # 永不失效
46
54
  end
47
55
 
48
56
  def record_cached_page
@@ -13,8 +13,8 @@ module RedisPage
13
13
  urls = {}
14
14
  key = "i:#{self.class.table_name}:#{self.id}"
15
15
  Rails.logger.info "[page cache]invalidate: #{key}"
16
- RedisPage.redis.smembers(key).each do |info|
17
- RedisPage.redis.srem(key, info)
16
+ RedisPage.cache_relation_redis.smembers(key).each do |info|
17
+ RedisPage.cache_relation_redis.srem(key, info)
18
18
  add_infos(urls, info)
19
19
  end
20
20
  add_clazz_infos(urls)
@@ -42,8 +42,8 @@ module RedisPage
42
42
  def add_clazz_infos(urls)
43
43
  key = "c:#{self.class.table_name}"
44
44
  Rails.logger.info "[page cache]invalidate: #{key}"
45
- RedisPage.redis.smembers(key).each do |info|
46
- RedisPage.redis.srem(key, info)
45
+ RedisPage.cache_relation_redis.smembers(key).each do |info|
46
+ RedisPage.cache_relation_redis.srem(key, info)
47
47
  add_infos(urls, info)
48
48
  end
49
49
  end
@@ -1,3 +1,3 @@
1
1
  module RedisPage
2
- VERSION = '0.1.20'
2
+ VERSION = '0.1.22'
3
3
  end
@@ -22,14 +22,14 @@ module RedisPage
22
22
  id = object.id
23
23
  end
24
24
  Rails.logger.info "[page cache]record: #{name}##{id}"
25
- RedisPage.redis.sadd("i:#{name}:#{id}", { url: request.base_url + request.path, country: @cache_country }.to_json)
25
+ RedisPage.cache_relation_redis.sadd("i:#{name}:#{id}", { url: request.base_url + request.path, country: @cache_country }.to_json)
26
26
  end
27
27
 
28
28
  # 记录类相关的页面,方便实体创建时,刷新页面缓存
29
29
  def mark_cache_clazz(clazz)
30
30
  name = clazz.table_name
31
31
  Rails.logger.info "[page cache]class: #{name}"
32
- RedisPage.redis.sadd("c:#{name}", { url: request.base_url + request.path, country: @cache_country }.to_json)
32
+ RedisPage.cache_relation_redis.sadd("c:#{name}", { url: request.base_url + request.path, country: @cache_country }.to_json)
33
33
  end
34
34
 
35
35
  end
data/lib/redis_page.rb CHANGED
@@ -3,6 +3,8 @@ require 'redis_page/railtie'
3
3
  module RedisPage
4
4
  class Config
5
5
  attr_accessor :sweeper, :redis, :ttl
6
+ attr_accessor :cache_page_redis, :cache_relation_redis
7
+ attr_accessor :compress_method
6
8
  end
7
9
 
8
10
  def self.config
@@ -17,6 +19,19 @@ module RedisPage
17
19
  config.redis
18
20
  end
19
21
 
22
+ def self.cache_page_redis
23
+ config.cache_page_redis || config.redis
24
+ end
25
+
26
+ def self.cache_relation_redis
27
+ config.cache_relation_redis || config.redis
28
+ end
29
+
30
+ # :deflate or nil
31
+ def self.compress_method
32
+ config.compress_method
33
+ end
34
+
20
35
  def self.sweeper
21
36
  config.sweeper
22
37
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_page
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - saberma
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-20 00:00:00.000000000 Z
11
+ date: 2016-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.0.9
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.0.9
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 4.0.9
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 4.0.9
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sidekiq
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 3.2.6
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.2.6
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sidekiq-unique-jobs
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 4.0.17
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 4.0.17
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.8'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.8'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '10.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '10.0'
97
97
  description: use redis to cache your rails page.
@@ -101,9 +101,9 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - .gitignore
105
- - .rspec
106
- - .travis.yml
104
+ - ".gitignore"
105
+ - ".rspec"
106
+ - ".travis.yml"
107
107
  - Gemfile
108
108
  - LICENSE.txt
109
109
  - README.md
@@ -129,17 +129,17 @@ require_paths:
129
129
  - lib
130
130
  required_ruby_version: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - '>='
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: '0'
135
135
  required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
141
  rubyforge_project:
142
- rubygems_version: 2.4.8
142
+ rubygems_version: 2.4.5.1
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: use redis to cache your rails page.