Ускорение загрузки TinyMCE

Всем известно, что TinyMCE не только хороший редактор но и то, что он очень долго загружается. Это отражается не только в субъектином восприятии и в анализе работы TinyMCE в Firebug и анализе журналов Squid

Рассматривая вывод команды

grep tiny_mce /var/log/squid/access.log  | awk '{print $4,$7}' |sort |uniq -c |sort -n |grep -v  _HIT 

можно увидеть подобное

     22 TCP_MISS/200 http://sever-les.com/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js?
     22 TCP_MISS/200 http://sever-les.com/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js?
     22 TCP_MISS/200 http://sever-les.com/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js?
     22 TCP_MISS/200 http://sever-les.com/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css?
     22 TCP_MISS/200 http://sever-les.com/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css?

Это говорит о то, что каждое обращение к этим статическим данным Squid запрашивал и выкачивал их снова, но ведь они не меняются кроме случаев смены версии редактора TyniMCE

Параметр Squid

refresh_pattern -i tiny_mce 43200 100% 86400 override-lastmod override-expire

ситуацию не улучшал, количество записей с TCP_MISS/200 только прибывало, и к тому же меня смутил знак вопроса в конце строк, говорящий о том, что запрос к этим файлам был как cgi сценариям, и Firebug подтвердил это. Вот что можно увидеть на вкладке Script

<script src="/tinymce/jscripts/tiny_mce/tiny_mce.js" type="text/javascript">
</script>
<script type="text/javascript">
</script>
<script onload="tinymce.dom.ScriptLoader._onLoad(this,'/tinymce/jscripts/tiny_mce/langs/en.js',0);" src="/tinymce/jscripts/tiny_mce/langs/en.js?v=307" type="text/javascript">
</script>
..............
ещё 100 подобного кода
..............
<link rel="stylesheet" href="/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css?v=307"></link>
<link rel="stylesheet" href="/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css?v=307">

Получается так, что при каждом запуске редактора, браузер закачивает эти СТАТИЧЕСКИЕ данные как CGI скриты (?=307) по-этому ни кеш браузера ни squid не могут правильно закешировать файлы редатора и перекачивают их при каждом запросе. Полистав tinymce/jscripts/tiny_mce/tiny_mce.js я нашёл этот код

_addVer : function(u, s) {
        return u + (u.indexOf('?') == -1 ? '?' : '&') + 'v=' + (tinymce.majorVersion + tinymce.minorVersion).replace(/[^0-9]/g, '');
    }

и заменил на этот

_addVer : function(u, s) {
        return u;
    }

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

~$ grep tiny_mce /var/log/squid/access.log | awk '{print $4,$7}' |grep _HIT | wc -l
1422
~$ grep tiny_mce /var/log/squid/access.log | awk '{print $4,$7}' |grep -v _HIT | wc -l
1557
~$
~$ grep tiny_mce /var/log/squid/access.log | awk '{print $4,$7}' |grep _HIT | wc -l
2028
~$ grep tiny_mce /var/log/squid/access.log | awk '{print $4,$7}' |grep -v _HIT | wc -l

1557 # количество НЕ ХИТОВ не изменилось

а вот статистика за 2 дня, до и после оптимизации

:~# awk '{print $4}' /var/log/squid/access.log.1  | sort | uniq -c | sort -n |tail -5

    485 TCP_DENIED/403
    693 TCP_MISS/304
   1203 TCP_HIT/200
   2372 TCP_IMS_HIT/304
   4311 TCP_MISS/200

:~# awk '{print $4}' /var/log/squid/access.log  | sort | uniq -c | sort -n |tail -5

     74 TCP_MEM_HIT/200
    145 TCP_IMS_HIT/304
    177 TCP_DENIED/403
    365 TCP_HIT/200
    850 TCP_MISS/200

Кстати, думаю, что опция Squid не помещает в любом случае

refresh_pattern -i tiny_mce 43200 100% 86400 override-lastmod override-expire

вот так по быстрому можно обновить у себя редактор на всех сайтах:

wget http://breys.ru/tinymce/jscripts/tiny_mce/tiny_mce.js

find /home/httpd/ -name tiny_mce.js -exec cp tiny_mce.js {} \;

Работа со ссылками в TinyMCE

похожие страницы

  1. Работа со ссылками в TinyMCE
  2. tinymce и html5 тег video
  3. Открытый биос на основе технологий Linux
  4. Загрузка с дискеты без дисковода
  5. Подготовка виртуальной среды для разработки в среде Django

#1:

Это какая версия tiny_mce ?

ответить  2009-04-17 13:45:38 

#2:

сделал - эффекта никакого.

ответить  2011-04-27 23:36:17