Присвойте CSS определенному элементу

Я - ведущий разработчик на сайте с по 15M пользователи. У нас было очень мало масштабирующихся проблем, потому что мы запланировали его РАНО и масштабируемый глубокомысленно. Вот некоторые стратегии, которые я могу предложить на основе своего опыта.

СХЕМА Прежде всего, денормализуйте свои схемы. Это означает, что, а не иметь несколько реляционных таблиц, необходимо вместо этого решить иметь одну большую таблицу. В целом соединения являются тратой драгоценных ресурсов DB, потому что выполнение нескольких готовится и дисковый ввод-вывод записей сопоставления. Избегайте их, когда Вы будете мочь.

компромисс здесь - то, что Вы будете хранить/вытягивать избыточные данные, но это приемлемо, потому что пропускная способность данных и внутриклетки является очень дешевой (большие диски), тогда как несколько готовятся, ввод-вывод более дорогие порядки величины (больше серверов).

ИНДЕКСАЦИЯ Удостоверяется, что Ваши запросы используют по крайней мере один индекс. Остерегайтесь, хотя, которого индексы будут стоить Вам, если Вы запишете или часто обновлять. Существуют некоторые экспериментальные приемы для предотвращения этого.

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

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

КЭШИРОВАНИЕ я настоятельно рекомендую Memcached. Это было доказано крупнейшими плеерами на стеке PHP (Facebook) и очень гибко. Существует два метода к выполнению этого, каждый кэшируется в Вашем уровне DB, другой кэшируется в Вашем слое бизнес-логики.

параметр слоя DB потребовал бы кэширования результата запросов, полученных от DB. Можно хешировать SQL-запрос с помощью md5 () и использование что как ключ поиска прежде, чем идти в базу данных. Позитивный аспект к этому - то, что довольно легко реализовать. Оборотная сторона (в зависимости от реализации) - то, что Вы теряете гибкость, потому что Вы рассматриваете все кэширование того же относительно истечения кэша.

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

репликация SHARDING ДАННЫХ только получает Вас до сих пор. Раньше, чем Вы ожидают, Ваши записи станут узким местом. Для компенсации удостоверьтесь, что поддерживали данные sharding рано как возможные. Вы, вероятно, захотите застрелиться позже, если Вы не сделаете.

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

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

ОФЛАЙНОВАЯ ОБРАБОТКА не заставляет пользователя ожидать Вашего бэкенда, если они не имеют к. Создайте очередь заданий и переместите любую обработку, что Вы можете офлайн, делание ее отделяется от запроса пользователя.

5
задан shaiss 6 November 2009 в 19:24
поделиться

5 ответов

Если вы можете установить идентификатор или класс в LI, это будет тривиально ..

ul li {
    color: #a9a9a9;
    border-top: 1px solid #333;
    border-bottom: #555858;
    list-style-type: none;
    padding: 10px 10px 10px 10px;
    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#4c4d4e), to(#404142));
    overflow: hidden;
}

ul li.special {
    font: normal 17px Helvetica;
}

<li class="special">Outside Job<span class="toggle"><input type="checkbox" /></span></li>

В сторону поэтому нет простого способа реализовать кроссбраузерность только с помощью CSS.

13
ответ дан 18 December 2019 в 09:08
поделиться

Кстати, вам, вероятно, следует подумать о добавлении дополнительных резервных шрифтов без засечек к этому правилу, помимо Helvetica . Я большой поклонник этого шрифта, но у большинства людей его нет на своих компьютерах.

РЕДАКТИРОВАТЬ: Кто-то опубликовал мой ответ, пока я писал этот. Я сохраню примечание на полях, потому что оно полезно.

1
ответ дан 18 December 2019 в 09:08
поделиться

Или используйте встроенный стиль STYLE = для самого LI:

  • ...
  • 1
    ответ дан 18 December 2019 в 09:08
    поделиться

    По сути, вам просто нужно дать ему дополнительный идентификатор / атрибут, чтобы у вас был селектор CSS для стилизации этого тега li . Пример:

    /*using class*/
    ul li.different {font: normal 17px Helvetica;}
    
    /*using attribute, title in this case*/
    ul li[title=diff] {font: normal 17px Helvetica;}
    
    /*using id if it's one and only*/
    #id {font: normal 17px Helvetica;}
    
    3
    ответ дан 18 December 2019 в 09:08
    поделиться

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

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

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

    <code><pre>
        <ul>
          <li>blah blah blah</li>
          <li class="special">blah blah blah</li>
          <li class="special">blah blah blah</li>
          <li id "extraspecial">blah blah blah</li>
          <li>blah blah blah</li>
        </ul>
    </pre></code>
    
    0
    ответ дан 18 December 2019 в 09:08
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: