Я вполне уверен, я могу разбить на страницы кэш подавляющее большинство моего сайта, но одна вещь, препятствующая тому, чтобы я делал так, состоит в том, что мои сообщения "молния" не покажут, или они покажут не в то время.
Одна вещь, которую я рассматриваю, пишет сообщение "молния" в cookie, читая его и отображает его с помощью JavaScript и очищает cookie, как только сообщение было отображено. Кто-либо имел успех, делающий это, или является там лучшими методами?
Спасибо.
Одним из решений может быть кэширование страницы, но включение сниппета 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
Похоже, что вы закольцовываете все игровые объекты, чтобы увидеть, какие объекты содержатся в ячейке. Кажется, что лучшим подходом было бы хранить список игровых объектов, которые находятся в ячейке для каждой ячейки. Если это сделать, и каждый объект знает, в каких ячейках он находится, то перемещение объектов между ячейками должно быть легким. Похоже, это принесет наибольший прирост производительности.
Вот еще один наконечник оптимизации для определения того, в каких ячейках находится объект: Если вы уже определили, в каких камерах (камерах ) находится объект, и знаете, что на основе скорости объектов он не изменит ячейки для текущего кадра, нет необходимости повторно запускать логику, которая определяет, в каких ячейках находится объект. Быструю проверку можно выполнить, создав ограничительную рамку, содержащую все ячейки, в которых находится объект. Затем можно создать ограничительную рамку, которая будет размером объекта + скорость объекта для текущего кадра. Если ограничивающая ячейка содержит ограничивающую рамку «объект + скорость», дальнейшие проверки не требуются. Если объект не перемещается, это еще проще, и можно просто использовать ограничительную рамку объекта.
Дайте мне знать, если это имеет смысл, или google/bing поиск «Quad Tree», или если вы не против использования открытого исходного кода, проверьте эту потрясающую библиотеку физики: http://www.codeplex.com/FarseerPhysics
-121--2579260-Вам не нужно кэшировать всю страницу. Попробуйте кэшировать фрагменты API
Я столкнулся с той же проблемой и обнаружил cacheable-flash плагин, который делает именно то, что KJF описал в вопросе.
Я думаю, что это более простое и приятное решение, чем чрезмерное количество вызовов ajax.
Я не использую 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:
Теперь, если эту страницу вытащить из кеша, все будет в порядке. На шаге 2 проверка файла cookie будет пройдена, поскольку он уже установлен, и сообщение отображаться не будет.