Pull to refresh
149
0
Игорь Миняйло @maghamed

Lead Architect, Magento an Adobe

Send message
Здесь автор несколько погарячился, когда говорил, о росте прибыли. Судя по его же таблицам это не прибыль, а доход, т.е. полученные средства БЕЗ вычета затрат и налогов.
Меня очень порадовал клиент для Redis redis-node-client, который поддерживает redis 2.0 с pub/sub-ом. Очень пригодилось, когда делали Comet сервер с большим колличеством подписок
Поставил плюс за статью из-за ссылки на Aves engine Очень круто
наверное, сейчас сидите и на ней печатаете? :-)
Cache

Сорри, такая ссылка
ну Аякс уже как-то индексируется. Например сайт www.coldfusionbloggers.org/

У них pagination через AJAX сделан

И эти страницы есть в кеше гугла:
www.google.com.ua/search?hl=uk&q=site:http://www.coldfusionbloggers.org+CPU&aq=f&aqi=&aql=&oq=&gs_rfai=
на прошлогоднем Google I/O тоже много говорили об индексировании джаваскрипта searchengineland.com/google-io-new-advances-in-the-searchability-of-javascript-and-flash-but-is-it-enough-19881
а иногда и вот так выходит…

Я тогда и свои 5 копеек вставлю.

Чтобы не делать для всех пользователей лишние 2 запроса для определения включен ли кеш или нет. К тому же — мы бьемся не за кеш, а за скорость загрузки и отрисовки всего документа для пользователя.

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

Проверка: разница во времени между получением ДОМ модели документа, и получением всего контента (в частности статического).

В ф-ии allContentLoaded, если разница: time2 — time1 привысит какое-то пороговое число для вашего сайта. Делайте запросы для проверки кеша.

<html>
<head>
</head>
<body onload="allContentLoaded()">
<!-- Page's content here-->
<script>

var time1 = 0;
var time2 = 0;

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>


* This source code was highlighted with Source Code Highlighter.


ЗЫ. код набросал на коленке. Немного не кроссбраузерно, просто чтобы логику показать
Да я и не надеюсь на браузер как на самый надежный кеш, и вполне допускаю, что он может «забыть» эти страницы. И более того, у меня в браузере кеш всегда отключен.

Так вот: если кеш отключен или по каким-то причинам был «забыт», то заголоавки If-Modified-Since или If-None-Match отправляться не будут, и соответственно мой скрипт не вернет для этого запроса ответ 304.

Да, вы правы, я не указал этого в коде статьи, чтобы не перегружать код большим кол-вом деталей. Но там должна быть еще проверка анализирующая заголовок f-Modified-Since или If-None-Match чтобы избежать ситуации, описанной вами.
я же написал какая у него логика. Проверить изменились ли блоки, если нет — 304, если да — сгенерить список урлов. А что не так с этой логикой?
Сорри, я протупил. :-) Еще раз весь тред прочитал. Как-то я пропустил это

>я предлагаю грузить эту «основную страницу» также как и все другие блоки =_="

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

Извини, что-то я запарился :-)
а как часто нужно проверять? о_О по большему счету такая проверка — это мелочь.

Я тоже понимаю, что ты имеешь в виду, а именно, поставить и на главный долбаный шаблон — Expire.

Но мы не можем так сделать, т.к. чтобы экстренно обновить этот шаблон у всех (скажем, поменять лейаут, забрендировать сайт под рекламную компанию и прочее), то нам прийдется добавлять какой-то гет параметр url?version=123. А это плохо для SEO, т.к. основные внешние страницы должны иметь постоянные урлы. Да и вообще нетолько для СЕО, просто плохо, т.к. некоторые и руками урлы вводят.
<html>
<body>
<div id='block1'>
   Hello {%username%}!
</div>
<div id='block2'>
    {% for friend in friends_list %}
        {%friend.name%} - {%friend.lastname%} 
    {%endfor%}
</div>
</body>
</html>


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

грубо говоря
Hello {%username%}!

{% for friend in friends_list %}
{%friend.name%} - {%friend.lastname%}
{%endfor%}




т.е. когда запросили страницу главную. получили что-то вроде такого. А данные для block1 и block2 уже подтягиваем отдельно.
а что будет по этой(-тим) ссылкам? сырые данные, скажем, в джейсоне?
я написал, про 304 заголовок при запросе к странице.
Или вы и на основную страницу предлагаете ставить экспаер в далекое будущее о_О? Здесь это точно не уместно
ну запрашивать нужно, с if-modified-since или etegом, естественно, и точно также получать 304, пока не произошел редизайн
можно MogileFS + Perlbal попробовать

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity