LessCSS останавливает стили обработки

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

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

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

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

6 ответов


Я только что нашел выпуск в GitHub для этого. Цитируя себя:

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

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

при переходе к производству вы просто компилируете файлы .в CSS


хорошая находка с localStorage. Самое быстрое решение-открыть консоль браузера и выполнить следующую команду:

localStorage.clear();

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


для отключения кэша localStorage можно использовать следующее:

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

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

вы можете поместить это в ваш HTML-документа:

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

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


лучший способ сделать это было бы передавая noCache=1 в URL, чтобы очистить хранилище localStorage браузера, когда вы разрабатываете меньше файлов, то он устанавливает куки, чтобы помнить, чтобы очистить его каждый раз и тогда вы могли бы поставить 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-файлов плагин для этого, чтобы работать


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

<link rel="stylesheet/less" href="assets/styles/less/bootstrap.less?v=<?= uniqid() ?>" media="all">