Rails тек қонақтық пайдаланушылар үшін кэштелген бетті жібереді

Мен кэштегі жаңалық болып санаймын, сондықтан ол анық болуы мүмкін.

Мен осындай нәрсеге қол жеткізгім келеді:

  1. Пайдаланушы тіркелмеген. Ол кэштелген бетті алады.

  2. Пайдаланушы жүйеге кірді, ол кэштелген емес, қарапайым бетті алады.

Мұндай нәрсе (псевдокод):

caches_action :index, :if => !current_user

Өкінішке орай, бұл жұмыс істемейді, бірақ менің ойымша, сіз бұл идеяға барасыз.

0

3 жауаптар

Бет кэштеуі веб-сервер тікелей өтіп жатқан Rails-ті толықтай алатын .html файлын сақтап қойғандықтан, сіз бұл әдісті пайдалана алмайсыз.

Беттің мазмұнын шартты түрде кэштаудың жақсы тәсілі болуы мүмкін. Мен әдетте cache әдісінің айналасында орындайтын cache_if әдісін қолданамын және шартты қабылдай аламын:

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

Бұл қолданған кезде келесідей көрінеді:

<% cache_if(!current_user, '#content') %>
...
<% end %>
3
қосылды
Бұл интерфейс емес интерфейс. Бұл әрекетті кэштеу. Қалай болса да, шартты түрде кэшке қызықты көзқарас аласыз. +1
қосылды автор nothing-special-here, көзі

Шешім:

caches_action :index, :unless => :current_user

0
қосылды

Пайдаланушы сеанстарына арналған Cache Sweeper бөлімін көре аласыз. Осылайша, негізінен, UserSession құрылды кезде, оны орнатуға болады, кэш бетін аяқтайды. Байланыстырылған Rails құжаттарының тазалағыштарына өте жақсы.

0
қосылды