Rails nafaqat mehmonlar uchun keshlangan sahifani yuboradi

Men ochiq-oydin bo'lishi uchun keshlashda yangi odamman.

Men shunga o'xshash biror narsaga erishmoqchiman:

  1. Foydalanuvchi ro'yxatdan o'tmagan. Keshlangan sahifani oladi.

  2. Foydalanuvchi kirgan, keshlangan emas, balki oddiy sahifa oladi.

Bunga o'xshash narsa (pseudocode):

caches_action :index, :if => !current_user

Afsuski, bu ishlamaydi, lekin menimcha, siz bu fikrga qo'shilasiz.

0

3 javoblar

Sahifa keshlash, veb-server to'g'ridan-to'g'ri o'tib ketadigan Railsni butunlay qabul qilgan .html faylini saqlab qolgandan buyon siz ushbu usuldan foydalana olmaysiz.

Sahifaning mazmunini shartli ravishda keshlash yaxshiroq yondashuv bo'lishi mumkin. Ko'pincha cache ko'rinishi atrofini o'rab turgan cache_if usulini qo'llayman va quyidagi shartlarni bajarishi mumkin:

def cache_if(condition, *options, &block)
  if (!condition)
    yield
  else
    cache(*options, &block)
  end
end

Buni ishlatganda shunday ko'rinadi:

<% cache_if(!current_user, '#content') %>
...
<% end %>
3
qo'shib qo'ydi
Bu not page caching. Bu harakat keshlash. Yaxshiyamki siz keshni shartli ravishda qiziqarli yondoshingiz. +1
qo'shib qo'ydi muallif nothing-special-here, manba

Biznes:

caches_action :index, :unless => :current_user

0
qo'shib qo'ydi

Foydalanuvchi seanslari uchun Keshni tozalash vositasi ni ko'rishingiz mumkin. Shunday qilib, asosan, UserSession yaratilganda bo'lgani kabi sozlashingiz mumkin, kesh-sahifani to'ldiring. Bog'langan Rails hujjatlari juda yaxshi.

0
qo'shib qo'ydi