2011-12-27 3 views
8

Я использую меньше в режиме JS (less.js) следующим образом:LessCSS останавливает стили обработки

<link rel="stylesheet/less" href="assets/styles/less/bootstrap.less" media="all"> 
<script src="assets/scripts/libs/less-1.1.5.min.js"></script> 

И после нескольких просмотров страниц, он прекращает обработку стилей и дает «кэшированные» версию. Чтобы перепрофилировать стили, я должен очистить куки-файлы браузера. Кто-нибудь знает, почему это? Есть ли какой-либо вариант, чтобы пересмотреть его на каждом просмотре страницы? Спасибо большое!

UPDATE: Рассмотрение некоторых из кода библиотеки, кажется, что он использует localStorage для хранения таблиц стилей в качестве кеша. Он основывается на последнем измененном времени файла для обновления этого кеша, но по какой-то причине он не работает должным образом, потому что он не принимает мои изменения ...

ответ

17

Я только что нашел issue in GitHub. Цитирование:

Это происходит и в 1.1.5. Сценарий использует localStorage для хранения таблиц стилей. Очистка кеша браузера не будет работать. Вы должны очистить файлы cookie (отключение всех ваших аккаунтов,%! @^#%) Или выполнение localStorage.clear(). Я использую это перед загрузкой less.js (не используя LocalStorage сам):

<script> /* Provisory for dev environment: */ localStorage.clear(); </script> 

При переходе на производство просто компилировать таблицы стилей для .css

+0

Вам не нужно топать все localstorage, вы можете просто удалить ключи, связанные с LESS.Клавиши выглядят как 'http {s}: // {host}/path/to/file.less' и связанный ключ' http {s}: // {host} /path/to/file.less: timestamp' , – Marius

0

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

вы могли бы поставить это в ваших HTML документов:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 

Но что бы отключить кэширование всех ресурсов не только ваши меньше файлов.

+0

Это отключит кеширование файлов, извлеченных из сервера. Здесь проблема другая, т. Е. Less.js добавляет еще один уровень кэширования в localstorage. – ShitalShah

4

Вы можете использовать следующие отключить кэш LocalStorage:

<script>var less=less||{};less.env='development';</script> 
<script src="path_to_less.js"></script> 
+0

В каком месте я это ставлю? –

+0

Это неправильно. 'less.env =" development "' делает less.js бросать ошибки компиляции в документе, 'less.watch()' включает автоматическую перезагрузку таблиц стилей. Ни один из этих отключить или очистить кеш. –

+0

@Artur 'less.env =" development "' работает просто отлично (но не нужно 'less.watch()'). –

5

Хорошая находка с LocalStorage. Быстрое решение, а затем, чтобы открыть консоль браузера и выполнить следующую команду:

localStorage.clear(); 

Затем обновить и вы установлены.

0

Лучшим способом сделать это было бы, передав noCache = 1 в url, чтобы очистить браузер localStorage, когда вы разрабатываете меньше файлов, тогда он устанавливает cookie, чтобы помнить, чтобы очищать его каждый раз, а затем вы можете поместить noCache = 0, чтобы сбросить куки, таким образом, конечный пользователь не в конечном итоге, их LocalStorage удаляются при использовании вашего сайта, и вы можете просто оставить его.

$(document).ready(function() {<br> 
    if(window.location.href.indexOf("noCache=1") > -1) {<br> 
     $.cookie('noCache', '1', { expires: 1, path: '/' });<br> 
     localStorage.clear();<br> 
    }<br> 
    if(window.location.href.indexOf("noCache=0") > -1) {<br> 
     $.cookie('noCache', '0', { expires: 1, path: '/' });<br> 
    }<br> 
    if ($.cookie('noCache') == '1'){<br> 
    alert ("disabled Cache");<br> 
    localStorage.clear();<br> 
    }<br> 
});<br> 
<br> 

вам потребуется jquery cookie плагин для этой работы

+0

Столь большая площадь ... –

0

вы также можете добавить уникальный параметр для предотвращения кеширования, например, если вы используете php:

<link rel="stylesheet/less" href="assets/styles/less/bootstrap.less?v=<?= uniqid() ?>" media="all"> 
Смежные вопросы