Всем известно, что 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 {} \;