Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Как отключить compressor в 4.4+ и его последствия? (http://forum.typo3.ru/showthread.php?t=9080)

-=UncleByte=- 15.12.2010 11:44

Как отключить compressor в 4.4+ и его последствия?
 
Недавно обновился на версию 4.4.4 с версии 4.3.8 и все ссылки на css и js моего шаблона приобрели вид /fileadmin/template/screen.css?1289786904 .
Подозреваю что это последствия работы compressor, хотя любой gzip в localconf.php отключен наглухо.
Такого вида "динамические" ссылки на тщательно вылизанный и пожатый мой собственный css категорически не устраивают хотя из-за того что вся статика заранее пожата gzip и отдается только через nginx, который ищет именно статически пожатые файлы, а такого вида ссылка вводит его в заблуждение и он заново жмет один и то же файл на лету.
Гугль ничего путного, за исключением правки класса pagerenderer, не посоветовал, поэтому обращаюсь тут к коллективному разуму.
Возможно ли как-то при помощи TS привести эти ссылки к прежнему виду без "динамической" составляющей?
Заранее признателен за любые советы.

Андрей Аксенов 16.12.2010 11:55

Залезаем в папку с распакованным новым ядром typo3 (у меня это typo3_src-4.4.4). Видим файл NEWS.txt - читаем. Этот файл рекомендуется читать при каждом обновлении ядра системы!
Видим:
Цитата:

* All CSS and JS files in the TYPO3 Backend are compressed now. This
means that they are added up to a single file without unnecessary
whitespace. This will reduce the count of requests drastically, which
eventually leads to faster loading and better performance.
CAUTION: If compressionLevel is configured
($TYPO3_CONF_VARS[TYPO3_MODE]['compressionLevel'] = 1 [1-9 for compression
level or TRUE for "enabled"]) the files will be served with gzip compression.
Be sure to enable / uncomment the needed configuration in your .htaccess file,
also found in misc/advanced.htaccess.

<FilesMatch "\.js\.gzip$">
AddType "text/javascript" .gzip
</FilesMatch>
<FilesMatch "\.css\.gzip$">
AddType "text/css" .gzip
</FilesMatch>
AddEncoding gzip .gzip

IMPORTANT: If you have any trouble accessing the Backend after upgrading
to TYPO3 4.4, make sure to clear the typo3temp/ directory manually or through
the TYPO3 install tool.
Что касается добавления ?1289786904 к файлам, то читаем далее:
Цитата:

* Automatic version-numbers of CSS and JS files to avoid caching problems:
This feature provides automatic numbering of CSS and JS files using the
files modified timestamp. This way the file reference will change when a
CSS or JS files is changed, and by this the browser and proxy will re-cache
the file. This feature can be configured to include the timestamp within the
filename (before .ext) or as a parameter to the file (default).
If versioning is done directly inside the filename (by setting
$TYPO3_CONF_VARS[BE][versionNumberInFilename] = TRUE) you need the
following line as the first rewrite rule in .htaccess:

# Rule for versioned static files (see $TYPO3_CONF_VARS[BE][versionNumberInFilename])
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|gzip)$ $1.$3 [L]

IMPORTANT: This rule has to be the very first rule to work properly,
at least it has to be placed before the "^typo3..." rewrite rule
Developers can use this API for versioning of files in their own backend mods,
by calling t3lib_div::createVersionNumberedFilename or using the core API
for including files in the page renderer class.
Из всего этого следует, что сейчас поджимаются css и JS файлы внутреннего интерфейса.
К этим же файлам для внешнего интерфейса добавляется временной шаблон во избежание проблем с кешированием. То есть, если время сохранения файла изменилось на сервере, то и добавляемое число также меняется, при этом содержимое самого файла остается прежним. Это позволяет механизмам кеширования правильно обрабатывать измененные файлы - их название поменялось... Как-то так.

-=UncleByte=- 16.12.2010 14:29

Отдельно отмечу что выдаются с этим самым timestamp выдаются мои собственные один раз и навсегда написанные css и js, а вот как раз стили того же CSC выдаются без timestamp. Точно так же хочу заметить что мои стили уже запакованы прекрасно работающей под любой *nix системой командой
Код:

find /www -type f -name '*.css' -exec gzip -9 '{}' \;
и мне соверщенно не нужно сжимать их каждый раз на лету gzip с участием nginx. Собственно потому и компилился nginx с gzip_static модулем.
Повторю вопрос - как эту "фичу" отключить не залезая в код ядра?

Valery Romanchev 16.12.2010 17:18

В файле t3lib/config_default.php
написано про $TYPO3_CONF_VARS[FE][versionNumberInFilename]


'versionNumberInFilename' => 'querystring', // String. Allows to automatically include a version number (timestamp of the file) to referred CSS and JS filenames on the rendered page. This will make browsers and proxies reload the files if they change (thus avoiding caching issues). Set to 'embed' will have the timestamp embedded in the filename, ie. filename.1269312081.js. IMPORTANT: 'embed' requires this .htaccess rule to work: RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.+)\.(\d+)\.(php|js|css|png|jpg|gif)$ $1.$3 [L]. Set to 'querystring' (default setting) to append the version number as a query parameter (doesn't require mod_rewrite). Set to '' will turn this functionality off (behaves like TYPO3 < v4.4).


т.е. надо поставить в localconf.php
$TYPO3_CONF_VARS['FE']['versionNumberInFilename'] = '';

-=UncleByte=- 16.12.2010 23:59

Так это просто поменяет отображение этих самых имен с вида file.js?timestamp на file.timestamp.js и это будет касаться только динамически создаваемых при генерации страницы самой typo3 стилей и скриптов.
Меня же волнует вопрос почему он этот самый querystring добавляет к моим файлам, которые, подчеркиваю, не меняются вовсе, и как эту ненужность отключить.

Valery Romanchev 17.12.2010 12:02

Цитата:

Сообщение от -=UncleByte=- (Сообщение 29694)
Так это просто поменяет отображение этих самых имен с вида file.js?timestamp на file.timestamp.js и это будет касаться только динамически создаваемых при генерации страницы самой typo3 стилей и скриптов.

нет, будет file.js и file.css

-=UncleByte=- 17.12.2010 12:24

Попробовал и включить и выключить этот параметр в InstallTool - влияет исключительно на отображение админки. Для фронтенда в обоих случаях выводит одно и то же:
Код:

<link rel="stylesheet" type="text/css" href="typo3temp/stylesheet_670d0f71b2.css?1291940230" media="all" />
<link rel="stylesheet" type="text/css" href="fileadmin/tmpl/screen.css?1292374803" media="screen" />
<link rel="stylesheet" type="text/css" href="fileadmin/tmpl/print.css?1163606366" media="print" />
<script src="typo3temp/javascript_93077bb238.js?1291906354" type="text/javascript"></script>

Похоже действительно придется лезть в ядро и отключать там.

Андрей Аксенов 17.12.2010 12:26

Ну если переключить на file.timestamp.js, а в настройках поставить:
PHP код:

$TYPO3_CONF_VARS['FE']['versionNumberInFilename'] = ''

.
То к названию файла будет прибавлятся это самое ''... То есть ничего...
А что касается ядра, то где и как, надо бы почитать в релизе, или в фордж, там наверняка есть, просто со временем сейчас туго...

-=UncleByte=- 17.12.2010 12:51

Именно так и стоит в последнем варианте, результат тот же.
Если переключить в единицу, то ломается вид админки, потому что не прописана добавка в htaccess, а для фронтенда все остается по-прежнему.

-=UncleByte=- 17.12.2010 20:36

Исправляюсь - есть два параметра VersionNumberInFilename - один для бэкенда, второй для фронтенда. Соответственно если менять параметр для фронтенда как указал Валерий все работает как надо.
Вопрос решен. Спасибо.


Часовой пояс GMT +4, время: 03:49.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot