LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 21:11:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: 1 2 [3]  Все   Вниз
  Добавить закладку  |  Печать  
Автор Тема: БыстроSEF как концепция (взгляните, будьте то  (Прочитано 24788 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Dead Krolik
Joostina
*****

Репутация: +33/-4
Offline Offline

Пол: Мужской
Сообщений: 245


Теперь я рыбка


« : 06.04.2008, 22:27:04 »

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

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

Для примера сделан сеф только для com_content: просмотр статьи + просмотр раздела, com_rss и com_weblinks.

Жду тестирования по сути и общий взгляд на проблему.

Для установки - включить сеф + в .htaccess раскомментировать секцию для сторонних сефоф и оставить там только это
Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php

Одна из якобы фичей - убийство Itemid. Если он не нужен в принципе, то в /components/com_sef/main.ini надо сделать disable_itemid=yes.

P.S. Если будет версия под 1.5.х, то вполне возможно будет не чихая сделать кириллические урлы.
P.P.S. Выкладываю тут, а не на моем форуме, т.к. программистов тут поболее будет. Особенно (сам уже не помню почему) хочу услышать userxp, ибо с чего-то мне в голову взбрело, что он в этом шарит Azn

Чуток обновил, инструкции те же: компонент ставим как обычно. Все расширения из sef_ext.zip просто копируем в папку /components/com_sef/sef_ext/ в распакованном виде.

* com_litesef.zip (13.12 Кб - загружено 260 раз.)
* sef_ext.zip (9.19 Кб - загружено 686 раз.)
« Последнее редактирование: 16.10.2008, 18:32:59 от Dead Krolik » Записан
 
Vladzimir
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Мужской
Сообщений: 334


В очередь! в очередь! День Сурка © М.Борзыкин


« Ответ #61 : 17.04.2009, 11:09:59 »

А почему бы не использовать нароботки от JPromoter.
В плане хранения настроек для каждого компонента в .xml файлах.
Тогда ЛЮБОЙ ЮЗЕР сможет настроить под себя, да и создание новых настроек для нового компонента займет всего 30 минут.

И объясните мне, почему нельзя хранить КАЖДУЮ ссылку в ОТДЕЛЬНОМ файле, а не в текстовой базе ссылок???
Записан
Timon_Crazy
Завсегдатай
*****

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 565


Лицензнаци


« Ответ #62 : 17.04.2009, 12:57:53 »

А почему бы не использовать нароботки от JPromoter.
В плане хранения настроек для каждого компонента в .xml файлах.
Тогда ЛЮБОЙ ЮЗЕР сможет настроить под себя, да и создание новых настроек для нового компонента займет всего 30 минут.

И объясните мне, почему нельзя хранить КАЖДУЮ ссылку в ОТДЕЛЬНОМ файле, а не в текстовой базе ссылок???
если хранить каждую ссылку в отдельном файле - то на нормальном портале мы получим >2000-3000 файлов, а у ОС есть ограничение на кол-во файлов.
плюс, учтите, время на поиск данного файла, и его обработку.
ну и 100 юзеров в системе, активных - не один хостинг не выдержит + будет тормознее чем в БД.
тут важна мера.

Записан
Vladzimir
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Мужской
Сообщений: 334


В очередь! в очередь! День Сурка © М.Борзыкин


« Ответ #63 : 23.04.2009, 11:30:21 »

А как же тогда стандартый кеш работает?
Ведь на одну страницу он ищет до 20 файлов.

Вопрос. А если для организации базы ссылок использовать не название компонентов (типа com_content.db), а хеш урла страницы котора вызывается по типу md5(index.php?option=......ItemId=1).db, а уже в ней хранить все ссылки но только данной страницы.
Т.е. получаеться одна страница - одна база ссылок. Дмаю что это должно убрать недостатки двух предыдущих вариантов. У первого варианта - при большом количестве ссылок в одной базе возникают тормоза, а второго - очень большое кол-во файлов что то-же не гуд. А так получается что создается оптимальное кол-во файлов с оптимальным количеством ссылок в нем.

А все-таки как на счет хранение настроек для каждого компонента в .xml файлах???
« Последнее редактирование: 23.04.2009, 11:44:25 от Vladzimir » Записан
Timon_Crazy
Завсегдатай
*****

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 565


Лицензнаци


« Ответ #64 : 27.04.2009, 12:32:45 »

А как же тогда стандартый кеш работает?
Ведь на одну страницу он ищет до 20 файлов.

Вопрос. А если для организации базы ссылок использовать не название компонентов (типа com_content.db), а хеш урла страницы котора вызывается по типу md5(index.php?option=......ItemId=1).db, а уже в ней хранить все ссылки но только данной страницы.
Т.е. получаеться одна страница - одна база ссылок. Дмаю что это должно убрать недостатки двух предыдущих вариантов. У первого варианта - при большом количестве ссылок в одной базе возникают тормоза, а второго - очень большое кол-во файлов что то-же не гуд. А так получается что создается оптимальное кол-во файлов с оптимальным количеством ссылок в нем.

А все-таки как на счет хранение настроек для каждого компонента в .xml файлах???
что даст хранение настроек компонентов в xml? вернее какие плюсы, я пока вижу минусы, при небольшом количестве сомнительных плюсов. главный минус - надо будет давать права на запись (минус безопасности), опять же разбор xml более ресурсоемок чем sql, также при активном сайте, чтение настроек (если без кеша), замедлил рабоут сайта, ибо чтение с файлов, более медленнее чем работа с базой.

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


Записан
..С...е...р...ы...й..
Завсегдатай
*****

Репутация: +108/-2
Offline Offline

Сообщений: 531



« Ответ #65 : 27.04.2009, 13:11:41 »

Цитировать
опять же разбор xml более ресурсоемок чем sql, также при активном сайте, чтение настроек (если без кеша), замедлил рабоут сайта, ибо чтение с файлов, более медленнее чем работа с базой.

отказываться от базы конечно не стоит, если для чпу будет делаться не более 1-3 запросов, а не 40-200 как на всех сторонних сефах.
Записан
Timon_Crazy
Завсегдатай
*****

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 565


Лицензнаци


« Ответ #66 : 27.04.2009, 14:16:31 »

да как и говорили выше надо в комплексе. в зависимости от нагрузки. что-то в базу, что-то в файлы. что-то может в память
Записан
Vladzimir
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Мужской
Сообщений: 334


В очередь! в очередь! День Сурка © М.Борзыкин


« Ответ #67 : 04.05.2009, 16:21:02 »

На счет хранения настроек в xml-файлах вы наверное немправильно меня поняли!
Даній пример реализован в JPromoter и позволяет за пять минут простому юзеру склепать СВОИ правила генерации урлов для каждого компонента. К тому-же настройки при каждом обращении не распарсиваются, а только если отсутствует ЧПУ-ссылка.
Я не предлагаю хранить ссылки в xml. А все сторонние сефы правила генерации ссылок для каждого компонента реализуют через "типа плагины" т.е. в файлах пхп. А для того что-бы их написать надо знать пхп. А здесь все просто. ЧПУ ссылки нет - распарсили правила-настройки, сгенерировали ЧПУ ссылку.

Очень советую найти JPromoter (он хоть и платный но в инете его полно) и посмотреть как там это реализовано. И я считаю что это намного проще для пользователя.
А вот уже где и как хранить ссылки - да этот вопрос остается открытый.
Записан
Timon_Crazy
Завсегдатай
*****

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 565


Лицензнаци


« Ответ #68 : 13.05.2009, 06:18:41 »

Вопрос: а как в xml файле указать, например, что надо вставить в ссылку название категории товара, название товара, да еще все в транслите? (пример для магазина виртуемарт) Вам не кажется что это уже как раз и надо "php плагином" делать.
а пользователю надо будет часто генерировать правила для урлов?  мне кажется нет. темболее компоненто-писатели могут включать готовый набор правил, они то знают php (ну почти все Azn )
проще для пользователя != хорошо для проекта
должна быть середина, в зависимости от задачи.
хотя для простых случаев Ваше предложение подходит, но надо давать возможность более полной настройки.
Записан
Vladzimir
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Мужской
Сообщений: 334


В очередь! в очередь! День Сурка © М.Борзыкин


« Ответ #69 : 15.05.2009, 11:38:37 »

Код:
<?xml version="1.0" encoding="utf-8"?>

<sefconfig component="com_virtuemart">
    <cond Itemid="*" page="shop.browse" category_id="*" limit="*" limitstart="*">
        <tpl>{lang}/{holder}/{category}{orderby}{kw}-{page}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.browse" category_id="*">
        <tpl>{lang}/{holder}/{category}{orderby}{kw}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.search">
        <tpl>{lang}/{holder}/Search-shop.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.registration">
        <tpl>{lang}/{holder}/Shop-registration.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.parameter_search">
        <tpl>{lang}/{holder}/Parameter-Search-shop.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.getfile" product_id="*" file_id="*">
        <tpl>{lang}/{holder}/{product}/{file}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.view_images" product_id="*">
        <tpl>{lang}/{holder}/{product}/images.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.view_images" category_id="*" product_id="*">
        <tpl>{lang}/{holder}/{category}/{product}/images.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.product_details" category_id="*" product_id="*" flypage="0" manufacturer_id="0">
        <tpl>{lang}/{holder}/{category}/{product}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.product_details" product_id="*">
        <tpl>{lang}/{holder}/{category}/{product}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.product_details" category_id="*" product_id="*" flypage="*" manufacturer_id="*">
        <tpl>{lang}/{holder}/{category}/{manufacturer}/{product}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.product_details" product_id="*" flypage="*">
        <tpl>{lang}/{holder}/Product-detail/{product}.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.index">
        <tpl>{lang}/{holder}/index.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.cart" product_id="*">
        <tpl>{lang}/{holder}/{product}/add-to-cart.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.cart">
        <tpl>{lang}/{holder}/Cart.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.browse">
        <tpl>{lang}/{holder}/All-Products.html</tpl>
    </cond>
    <cond Itemid="*" page="shop.infopage" vendor_id="*" output="*">
        <tpl>{lang}/{holder}/{vendor}/infopage-{output}.html</tpl>
    </cond>

    <cond Itemid="*" page="checkout.index" ship_to_info_id="*" shipping_rate_id="*" checkout_next_step="2">
        <tpl>{lang}/{holder}/{shiprate}{nextstep}/shipto-code-{shipto}/checkout.html</tpl>
    </cond>
    <cond Itemid="*" page="checkout.index" mosmsg="*">
        <tpl>{lang}/{holder}/checkout/{mosmsg}.html</tpl>
    </cond>
    <cond Itemid="*" page="checkout.index" ssl_redirect="*">
        <tpl>{lang}/{holder}/{ssl}/checkout.html</tpl>
    </cond>
    <cond Itemid="*" page="checkout.index">
        <tpl>{lang}/{holder}/checkout.html</tpl>
    </cond>
     <cond Itemid="*" page="checkout.paypal_pro_ec_error">
        <tpl>{lang}/{holder}/{message}/checkout.html</tpl>
    </cond>
  
    <cond Itemid="*" page="order.order_print" order_id="*">
        <tpl>{lang}/{holder}/print-order/{oid}.html</tpl>
    </cond>
   
    <cond Itemid="*" page="account.index">
        <tpl>{lang}/{holder}/account.html</tpl>
    </cond>
    <cond Itemid="*" page="account.shipping">
        <tpl>{lang}/{holder}/account/shipping-information.html</tpl>
    </cond>
    <cond Itemid="*" page="account.billing" next_page="*">
        <tpl>{lang}/{holder}/account/billing-information/{next}.html</tpl>
    </cond>
    <cond Itemid="*" page="account.billing">
        <tpl>{lang}/{holder}/account/billing-information.html</tpl>
    </cond>
    <cond Itemid="*" page="account.shipto" next_page="*">
        <tpl>{lang}/{holder}/account/ship-to/{next}.html</tpl>
    </cond>
    <cond Itemid="*" page="account.shipto">
        <tpl>{lang}/{holder}/account/ship-to.html</tpl>
    </cond>
    <cond Itemid="*" page="account.order_details" order_id="*">
        <tpl>{lang}/{holder}/account/order-details/{oid}.html</tpl>
    </cond>
   
    <cond Itemid="*">
        <tpl>{lang}/{holder}.html</tpl>
    </cond>
    <!-- Variables -->
    <var name="file" type="query">
        <query>SELECT `file_title` FROM `#__vm_product_files` WHERE `file_id` = {file_id}</query>
        <empty>?</empty>
    </var>
    <var name="category" type="query">
        <query>
SELECT `category_name`, `category_id`, category_id, category_parent_id FROM #__vm_category AS c
LEFT JOIN #__vm_category_xref AS x ON category_id = category_child_id
WHERE `category_child_id` = {category_id}

 
</query>
        <empty>?</empty>
    </var>
    <var name="product" type="query">
        <query>
SELECT `product_name`, `product_id` FROM `#__vm_product` where `product_id` = {product_id}
</query>
        <empty>?</empty>
    </var>
    <var name="shipto" type="query">
        <query>SELECT `mf_name` FROM `#__vm_manufacturer` WHERE `manufacturer_id` = {ship_to_info_id}</query>
        <empty>?</empty>
    </var>
    <var name="manufacturer" type="query">
        <query>SELECT `mf_name` FROM `#__vm_manufacturer` WHERE `manufacturer_id` = {manufacturer_id}</query>
        <empty>?</empty>
    </var>
    <var name="page" type="query">
        <query>SELECT ({limitstart} div {limit}) + 1</query>
        <empty>0</empty>
    </var>
    <var name="mosmsg" type="string">
       <value>{mosmsg}</value>
    </var>
    <var name="shipto" type="string">
       <value>{ship_to_info_id}</value>
    </var>
    <var name="shiprate" type="string">
       <value>{shipping_rate_id}</value>
    </var>
    <var name="message" type="string">
       <value>{message}</value>
    </var>
    <var name="nextstep" type="string">
       <value>{checkout_next_step}</value>
    </var>
    <var name="next" type="string">
       <value>{next_page}</value>
   </var>
   <var name="ssl" type="string">
       <value>{ssl_redirect}</value>
   </var>
   <var name="oid" type="string">
       <value>{order_id}</value>
   </var>
   <var name="holder" type="query">
        <query>SELECT `name` FROM `#__menu` WHERE `id` = {Itemid}</query>
        <empty>?</empty>
   </var>
   <var name="uid" type="string">
       <value>{user_info_id}</value>
   </var>
   <var name="lang" type="string" ifpresent="lang">
        <value>/{lang}</value>
   </var>
   <var name="orderby" type="string" ifpresent="orderby">
        <value></value>
   </var>
   <var name="kw" type="string" ifpresent="keyword">
        <value>/{keyword}</value>
   </var>
</sefconfig>
Вот код настроек для Виртуемарта для JPromoter.
Все просто и наглядно и главное ОЧЕНЬ гибко. Это по моему гораздо проще чем писать новый плагин. Например я без обширных знаний php смог создать за пол-часа для редкого компонента новіе настройки, по аналогии с представленніми настройками.
+ У JPromoter в связи с игнорированием Itemid нет дублирования ссылок.
ОЧЕНЬ РЕКОМЕНДУЮ его более внимательно изучить и взять все самое лучшее.
Записан
Timon_Crazy
Завсегдатай
*****

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 565


Лицензнаци


« Ответ #70 : 15.05.2009, 12:03:34 »

JPromoter - платный компонент, по закрытой лицензии.
приведенные настройки - по мне так не проще php ) синтаксис разбора правил замудренный )

а как там без Itemid реализовали привязку меню и т.д. к странице? как?
Записан
Vladzimir
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Мужской
Сообщений: 334


В очередь! в очередь! День Сурка © М.Борзыкин


« Ответ #71 : 15.05.2009, 16:52:16 »

Он не по закрытой лицензии, а под GPL (только платный и с открытым кодом), правда только под 1.0.*.
А синтакиси и не такой уже и замудренный. Сначала лепим шаблоны урла, а потом уже для каждого шаблона пишем правило, или из запроса или из переменной. Просто после того как я пытался настроить Джумсеф, скоко матюгался, а потом приобрел JPromoter и дело пошло на поправку. + Я его немного допилил (всего один запрос), так он у меня теперь просто летает на хосте.
Цитировать
а как там без Itemid реализовали привязку меню и т.д. к странице? как?
Наверно е Вы опять немного не поняли. Привязка как была так и осталась, просто пригенерации ссылки не учитываеться/учитывается Itemid, т.е на одну ЧПУ ссылку в базу записываются разные урлы.
Например при запросе на одну ссылку /super-puper.html в базе могут быть ссылки такого вида:
Цитировать
index.php?option=com_content&task=view&id=11&Itemid=208
index.php?option=com_content&task=view&Itemid=208&id=11
index.php?option=com_content&task=view&id=11&Itemid=55

и даже такого вида

index.php?task=view&id=11&Itemid=208&option=com_content



Дело в том что очень часто разные модули плодят разного вида ссылки, как например последняя. Что кстати было в Виртуемарте и до сих пор осталось. Для этого я сначала пытался править код Виртуя, но в некоторых ситуациях оно всеравно не помогало.
Записан
Vladzimir
Давно я тут
****

Репутация: +22/-0
Offline Offline

Пол: Мужской
Сообщений: 334


В очередь! в очередь! День Сурка © М.Борзыкин


« Ответ #72 : 21.05.2009, 01:29:38 »

Кстати с 9 мая ВСЕ продукты с http://joomlaequipment.com теперь под GPL лицензией и в свободном доступе.
Записан
newleax
Давно я тут
****

Репутация: +23/-0
Offline Offline

Пол: Женский
Сообщений: 313



« Ответ #73 : 05.12.2009, 19:50:05 »

И на этом сдохло... тааак, пошла читать дальше...
Записан
Страниц: 1 2 [3]  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet