Здесь автор несколько погарячился, когда говорил, о росте прибыли. Судя по его же таблицам это не прибыль, а доход, т.е. полученные средства БЕЗ вычета затрат и налогов.
Меня очень порадовал клиент для Redis redis-node-client, который поддерживает redis 2.0 с pub/sub-ом. Очень пригодилось, когда делали Comet сервер с большим колличеством подписок
Чтобы не делать для всех пользователей лишние 2 запроса для определения включен ли кеш или нет. К тому же — мы бьемся не за кеш, а за скорость загрузки и отрисовки всего документа для пользователя.
Я бы делал эти два запроса только для тех, у кого страница медленно сгенерировалась, т.е. пользователь ждал. Он мог ждать и из-за медленного интернета, и из-за лагов у вас на сервере, поэтому нужно проверить кеш ли тому виной.
Проверка: разница во времени между получением ДОМ модели документа, и получением всего контента (в частности статического).
В ф-ии allContentLoaded, если разница: time2 — time1 привысит какое-то пороговое число для вашего сайта. Делайте запросы для проверки кеша.
function microtime(get_as_float) {
var now = new Date().getTime() / 1000;
var s = parseInt(now);
return (get_as_float) ? now : (Math.round((now - s) * 1000) / 1000) + ' ' + s;
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
}
function allContentLoaded() {
time2 = microtime(true);
res = parseFloat(time2 - time1).toFixed(3);
alert(res);
}
function DOMContentLoaded() {
time1 = microtime(true);
}
</script>
</body>
</html>
Да я и не надеюсь на браузер как на самый надежный кеш, и вполне допускаю, что он может «забыть» эти страницы. И более того, у меня в браузере кеш всегда отключен.
Так вот: если кеш отключен или по каким-то причинам был «забыт», то заголоавки If-Modified-Since или If-None-Match отправляться не будут, и соответственно мой скрипт не вернет для этого запроса ответ 304.
Да, вы правы, я не указал этого в коде статьи, чтобы не перегружать код большим кол-вом деталей. Но там должна быть еще проверка анализирующая заголовок f-Modified-Since или If-None-Match чтобы избежать ситуации, описанной вами.
Сорри, я протупил. :-) Еще раз весь тред прочитал. Как-то я пропустил это
>я предлагаю грузить эту «основную страницу» также как и все другие блоки =_="
Да, согласен, можно шаблон тоже так как и все данные получать. Так, может быть даже удобней, если много вариантов этих долбаных шаблонов, при варианте юзер-бейз, кастомизации страницы.
а как часто нужно проверять? о_О по большему счету такая проверка — это мелочь.
Я тоже понимаю, что ты имеешь в виду, а именно, поставить и на главный долбаный шаблон — Expire.
Но мы не можем так сделать, т.к. чтобы экстренно обновить этот шаблон у всех (скажем, поменять лейаут, забрендировать сайт под рекламную компанию и прочее), то нам прийдется добавлять какой-то гет параметр url?version=123. А это плохо для SEO, т.к. основные внешние страницы должны иметь постоянные урлы. Да и вообще нетолько для СЕО, просто плохо, т.к. некоторые и руками урлы вводят.
так, главная страница, и так содержит все блоки. Фактически это один большой шаблон. В который входят логические блоки. Данные для которых мы получим после. Т.е. представление для каждого блока оно уже находится на этой основной странице.
грубо говоря Hello {%username%}!
{% for friend in friends_list %}
{%friend.name%} - {%friend.lastname%}
{%endfor%}
т.е. когда запросили страницу главную. получили что-то вроде такого. А данные для block1 и block2 уже подтягиваем отдельно.
я написал, про 304 заголовок при запросе к странице.
Или вы и на основную страницу предлагаете ставить экспаер в далекое будущее о_О? Здесь это точно не уместно
Сорри, такая ссылка
У них pagination через AJAX сделан
И эти страницы есть в кеше гугла:
www.google.com.ua/search?hl=uk&q=site:http://www.coldfusionbloggers.org+CPU&aq=f&aqi=&aql=&oq=&gs_rfai=
Чтобы не делать для всех пользователей лишние 2 запроса для определения включен ли кеш или нет. К тому же — мы бьемся не за кеш, а за скорость загрузки и отрисовки всего документа для пользователя.
Я бы делал эти два запроса только для тех, у кого страница медленно сгенерировалась, т.е. пользователь ждал. Он мог ждать и из-за медленного интернета, и из-за лагов у вас на сервере, поэтому нужно проверить кеш ли тому виной.
Проверка: разница во времени между получением ДОМ модели документа, и получением всего контента (в частности статического).
В ф-ии allContentLoaded, если разница: time2 — time1 привысит какое-то пороговое число для вашего сайта. Делайте запросы для проверки кеша.
ЗЫ. код набросал на коленке. Немного не кроссбраузерно, просто чтобы логику показать
Так вот: если кеш отключен или по каким-то причинам был «забыт», то заголоавки If-Modified-Since или If-None-Match отправляться не будут, и соответственно мой скрипт не вернет для этого запроса ответ 304.
Да, вы правы, я не указал этого в коде статьи, чтобы не перегружать код большим кол-вом деталей. Но там должна быть еще проверка анализирующая заголовок f-Modified-Since или If-None-Match чтобы избежать ситуации, описанной вами.
>я предлагаю грузить эту «основную страницу» также как и все другие блоки =_="
Да, согласен, можно шаблон тоже так как и все данные получать. Так, может быть даже удобней, если много вариантов этих долбаных шаблонов, при варианте юзер-бейз, кастомизации страницы.
Извини, что-то я запарился :-)
Я тоже понимаю, что ты имеешь в виду, а именно, поставить и на главный долбаный шаблон — Expire.
Но мы не можем так сделать, т.к. чтобы экстренно обновить этот шаблон у всех (скажем, поменять лейаут, забрендировать сайт под рекламную компанию и прочее), то нам прийдется добавлять какой-то гет параметр url?version=123. А это плохо для SEO, т.к. основные внешние страницы должны иметь постоянные урлы. Да и вообще нетолько для СЕО, просто плохо, т.к. некоторые и руками урлы вводят.
Извиняюсь, не посмотрел предпросмотр, перед отправлением
грубо говоря
Hello {%username%}!
{% for friend in friends_list %}
{%friend.name%} - {%friend.lastname%}
{%endfor%}
т.е. когда запросили страницу главную. получили что-то вроде такого. А данные для block1 и block2 уже подтягиваем отдельно.
Или вы и на основную страницу предлагаете ставить экспаер в далекое будущее о_О? Здесь это точно не уместно