Dead Krolik
Joostina
   
Репутация: +33/-4
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, ибо с чего-то мне в голову взбрело, что он в этом шарит  Чуток обновил, инструкции те же: компонент ставим как обычно. Все расширения из sef_ext.zip просто копируем в папку /components/com_sef/sef_ext/ в распакованном виде.
|
|
|
|
« Последнее редактирование: 16.10.2008, 18:32:59 от Dead Krolik »
|
Записан
|
|
|
|
| |
Vladzimir
Давно я тут
  
Репутация: +22/-0
Offline
Пол: 
Сообщений: 334
В очередь! в очередь! День Сурка © М.Борзыкин
|
 |
« Ответ #61 : 17.04.2009, 11:09:59 » |
|
А почему бы не использовать нароботки от JPromoter. В плане хранения настроек для каждого компонента в .xml файлах. Тогда ЛЮБОЙ ЮЗЕР сможет настроить под себя, да и создание новых настроек для нового компонента займет всего 30 минут.
И объясните мне, почему нельзя хранить КАЖДУЮ ссылку в ОТДЕЛЬНОМ файле, а не в текстовой базе ссылок???
|
|
|
|
|
Записан
|
|
|
|
Timon_Crazy
Завсегдатай
   
Репутация: +31/-4
Offline
Пол: 
Сообщений: 565
Лицензнаци
|
 |
« Ответ #62 : 17.04.2009, 12:57:53 » |
|
А почему бы не использовать нароботки от JPromoter. В плане хранения настроек для каждого компонента в .xml файлах. Тогда ЛЮБОЙ ЮЗЕР сможет настроить под себя, да и создание новых настроек для нового компонента займет всего 30 минут.
И объясните мне, почему нельзя хранить КАЖДУЮ ссылку в ОТДЕЛЬНОМ файле, а не в текстовой базе ссылок???
если хранить каждую ссылку в отдельном файле - то на нормальном портале мы получим >2000-3000 файлов, а у ОС есть ограничение на кол-во файлов. плюс, учтите, время на поиск данного файла, и его обработку. ну и 100 юзеров в системе, активных - не один хостинг не выдержит + будет тормознее чем в БД. тут важна мера.
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
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
Пол: 
Сообщений: 565
Лицензнаци
|
 |
« Ответ #64 : 27.04.2009, 12:32:45 » |
|
А как же тогда стандартый кеш работает? Ведь на одну страницу он ищет до 20 файлов.
Вопрос. А если для организации базы ссылок использовать не название компонентов (типа com_content.db), а хеш урла страницы котора вызывается по типу md5(index.php?option=......ItemId=1).db, а уже в ней хранить все ссылки но только данной страницы. Т.е. получаеться одна страница - одна база ссылок. Дмаю что это должно убрать недостатки двух предыдущих вариантов. У первого варианта - при большом количестве ссылок в одной базе возникают тормоза, а второго - очень большое кол-во файлов что то-же не гуд. А так получается что создается оптимальное кол-во файлов с оптимальным количеством ссылок в нем.
А все-таки как на счет хранение настроек для каждого компонента в .xml файлах???
что даст хранение настроек компонентов в xml? вернее какие плюсы, я пока вижу минусы, при небольшом количестве сомнительных плюсов. главный минус - надо будет давать права на запись (минус безопасности), опять же разбор xml более ресурсоемок чем sql, также при активном сайте, чтение настроек (если без кеша), замедлил рабоут сайта, ибо чтение с файлов, более медленнее чем работа с базой. а про сеф - мне кажется правила преобразования должны быть более однозначны, и без редких случаев, можно получать ссылку на страницу без использования внешних хранилищь.
|
|
|
|
|
Записан
|
|
|
|
|
..С...е...р...ы...й..
|
 |
« Ответ #65 : 27.04.2009, 13:11:41 » |
|
опять же разбор xml более ресурсоемок чем sql, также при активном сайте, чтение настроек (если без кеша), замедлил рабоут сайта, ибо чтение с файлов, более медленнее чем работа с базой. отказываться от базы конечно не стоит, если для чпу будет делаться не более 1-3 запросов, а не 40-200 как на всех сторонних сефах.
|
|
|
|
|
Записан
|
|
|
|
Timon_Crazy
Завсегдатай
   
Репутация: +31/-4
Offline
Пол: 
Сообщений: 565
Лицензнаци
|
 |
« Ответ #66 : 27.04.2009, 14:16:31 » |
|
да как и говорили выше надо в комплексе. в зависимости от нагрузки. что-то в базу, что-то в файлы. что-то может в память
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
Offline
Пол: 
Сообщений: 334
В очередь! в очередь! День Сурка © М.Борзыкин
|
 |
« Ответ #67 : 04.05.2009, 16:21:02 » |
|
На счет хранения настроек в xml-файлах вы наверное немправильно меня поняли! Даній пример реализован в JPromoter и позволяет за пять минут простому юзеру склепать СВОИ правила генерации урлов для каждого компонента. К тому-же настройки при каждом обращении не распарсиваются, а только если отсутствует ЧПУ-ссылка. Я не предлагаю хранить ссылки в xml. А все сторонние сефы правила генерации ссылок для каждого компонента реализуют через "типа плагины" т.е. в файлах пхп. А для того что-бы их написать надо знать пхп. А здесь все просто. ЧПУ ссылки нет - распарсили правила-настройки, сгенерировали ЧПУ ссылку.
Очень советую найти JPromoter (он хоть и платный но в инете его полно) и посмотреть как там это реализовано. И я считаю что это намного проще для пользователя. А вот уже где и как хранить ссылки - да этот вопрос остается открытый.
|
|
|
|
|
Записан
|
|
|
|
Timon_Crazy
Завсегдатай
   
Репутация: +31/-4
Offline
Пол: 
Сообщений: 565
Лицензнаци
|
 |
« Ответ #68 : 13.05.2009, 06:18:41 » |
|
Вопрос: а как в xml файле указать, например, что надо вставить в ссылку название категории товара, название товара, да еще все в транслите? (пример для магазина виртуемарт) Вам не кажется что это уже как раз и надо "php плагином" делать. а пользователю надо будет часто генерировать правила для урлов? мне кажется нет. темболее компоненто-писатели могут включать готовый набор правил, они то знают php (ну почти все  ) проще для пользователя != хорошо для проекта должна быть середина, в зависимости от задачи. хотя для простых случаев Ваше предложение подходит, но надо давать возможность более полной настройки.
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
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
Пол: 
Сообщений: 565
Лицензнаци
|
 |
« Ответ #70 : 15.05.2009, 12:03:34 » |
|
JPromoter - платный компонент, по закрытой лицензии. приведенные настройки - по мне так не проще php ) синтаксис разбора правил замудренный )
а как там без Itemid реализовали привязку меню и т.д. к странице? как?
|
|
|
|
|
Записан
|
|
|
|
Vladzimir
Давно я тут
  
Репутация: +22/-0
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
Пол: 
Сообщений: 334
В очередь! в очередь! День Сурка © М.Борзыкин
|
 |
« Ответ #72 : 21.05.2009, 01:29:38 » |
|
Кстати с 9 мая ВСЕ продукты с http://joomlaequipment.com теперь под GPL лицензией и в свободном доступе.
|
|
|
|
|
Записан
|
|
|
|
newleax
Давно я тут
  
Репутация: +23/-0
Offline
Пол: 
Сообщений: 313
|
 |
« Ответ #73 : 05.12.2009, 19:50:05 » |
|
И на этом сдохло... тааак, пошла читать дальше...
|
|
|
|
|
Записан
|
|
|
|
|