Кэширование страницы Rails и сообщения "молния"

Я вполне уверен, я могу разбить на страницы кэш подавляющее большинство моего сайта, но одна вещь, препятствующая тому, чтобы я делал так, состоит в том, что мои сообщения "молния" не покажут, или они покажут не в то время.

Одна вещь, которую я рассматриваю, пишет сообщение "молния" в cookie, читая его и отображает его с помощью JavaScript и очищает cookie, как только сообщение было отображено. Кто-либо имел успех, делающий это, или является там лучшими методами?

Спасибо.

10
задан John Topley 26 February 2010 в 18:09
поделиться

4 ответа

Одним из решений может быть кэширование страницы, но включение сниппета javascript, который будет делать еще один небольшой запрос только для раздела, который вы хотите сделать динамическим. Таким образом, пользователь загрузит страницу полностью, а затем, когда javascript выполнит запрос, он вытащит элемент динамической страницы.

Некоторое время назад я написал об этом небольшую статью в блоге. http://chase.ratchetsoftware.com/2008/12/rails-caching-dynamic-fragments/

Кроме того, Грег Поллак из RailsEnvy сделал скринкаст, в котором он рассказывает о наличии динамических данных на кэшированных страницах. http://railslab.newrelic.com/2009/02/05/episode-5-advanced-page-caching

Hope this helps,

Chase Gray

2
ответ дан 3 December 2019 в 23:49
поделиться

Похоже, что вы закольцовываете все игровые объекты, чтобы увидеть, какие объекты содержатся в ячейке. Кажется, что лучшим подходом было бы хранить список игровых объектов, которые находятся в ячейке для каждой ячейки. Если это сделать, и каждый объект знает, в каких ячейках он находится, то перемещение объектов между ячейками должно быть легким. Похоже, это принесет наибольший прирост производительности.

Вот еще один наконечник оптимизации для определения того, в каких ячейках находится объект: Если вы уже определили, в каких камерах (камерах ) находится объект, и знаете, что на основе скорости объектов он не изменит ячейки для текущего кадра, нет необходимости повторно запускать логику, которая определяет, в каких ячейках находится объект. Быструю проверку можно выполнить, создав ограничительную рамку, содержащую все ячейки, в которых находится объект. Затем можно создать ограничительную рамку, которая будет размером объекта + скорость объекта для текущего кадра. Если ограничивающая ячейка содержит ограничивающую рамку «объект + скорость», дальнейшие проверки не требуются. Если объект не перемещается, это еще проще, и можно просто использовать ограничительную рамку объекта.

Дайте мне знать, если это имеет смысл, или google/bing поиск «Quad Tree», или если вы не против использования открытого исходного кода, проверьте эту потрясающую библиотеку физики: http://www.codeplex.com/FarseerPhysics

-121--2579260-

Вам не нужно кэшировать всю страницу. Попробуйте кэшировать фрагменты API

0
ответ дан 3 December 2019 в 23:49
поделиться

Я столкнулся с той же проблемой и обнаружил cacheable-flash плагин, который делает именно то, что KJF описал в вопросе.

Я думаю, что это более простое и приятное решение, чем чрезмерное количество вызовов ajax.

4
ответ дан 3 December 2019 в 23:49
поделиться

Я не использую Rails, но вот как я сделал это в Python с использованием UUID:

# set flash messages like this
def flash(self, title, body):
  session['flash_messages'].append({
    'title': title,
    'body': body,
    'uuid': uuid().hex  # stores a UUID as a string
  })

...

self.flash('foo', 'bar')

Затем в базовом шаблоне у меня есть следующее:

<script type="text/javascript">
  {% for m in session.flash_messages %}
    if(!Cookies.get('{{m.uuid}}')) {
      Notify('{{m.title}}', '{{m.body}}');
      Cookie.set('{{m.uuid}}', 'true', 86400); // key, value, expiry seconds
    }
  {% endfor %}
</script>

Я разберу его для проблем с Python:

  1. Когда вы добавляете флэш-сообщение, вы создаете уникальный идентификатор и сохраняете его вместе с этим сообщением.
  2. Перед отображением сообщения вы проверяете, установлен ли файл cookie с уникальным идентификатором сообщения.
  3. Если этот файл cookie не был установлен, высветить сообщение и установить файл cookie. Срок действия файла cookie истекает через день или как можно более краткий срок.

Теперь, если эту страницу вытащить из кеша, все будет в порядке. На шаге 2 проверка файла cookie будет пройдена, поскольку он уже установлен, и сообщение отображаться не будет.

-1
ответ дан 3 December 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: