2011-12-27 60 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> 

經過一番頁面瀏覽量,它停止處理方式並給出了一個「緩存」的版本。爲了使它重新解析樣式,我必須清除瀏覽器Cookie。有人知道這是爲什麼嗎?是否有任何選項可以在每個頁面視圖上重新解析? 非常感謝!

更新:回顧一些庫代碼,似乎它使用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

您不需要斧頭所有本地存儲,您可以刪除LESS相關的鍵。這些密鑰看起來像是'http {s}:// {host}/path/to/file.less'和相關的密鑰'http {s}:// {host} /path/to/file.less:timestamp' 。 – Marius 2016-11-03 22:13:00

0

它緩存它的原因因爲生成css文件需要時間,如果你有很多代碼需要編譯,那麼這個時間可能會導致糟糕的用戶體驗。

,你可以把這個在你的HTML文檔:

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

但是,這將禁用所有資源,而不只是你少的文件緩存。

+0

這將禁用從服務器拉取文件的緩存。這裏的問題是不同的,即less.js在localstorage中增加了另一層緩存。 – ShitalShah 2014-04-20 08:44:28

4

您可以使用以下方法來禁用localStorage的緩存:

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

我在哪個地方放? – 2012-01-02 17:44:04

+0

這是錯誤的。 'less.env =「development」'使less.js在文檔中拋出編譯錯誤,'less.watch()'打開樣式表的自動重載。這些都不能禁用或清除緩存。 – 2012-05-10 19:31:31

+0

@Artur'less.env =「development」'工作得很好(但不需要'less.watch()')。 – 2013-04-27 20:09:12

5

尼斯找到了localStorage的。最快的解決辦法,那麼,就是打開你的瀏覽器的控制檯,並運行以下命令:

localStorage.clear(); 

然後刷新你設定。

0

這樣做的一個更好的方法是通過傳遞noCache = 1到url來清除瀏覽器localStorage當你在少文件開發,然後它設置一個cookie記住清除它,然後你可以把noCache = 0,表示取消設置的cookie,這樣最終用戶不會最終不得不使用你的網站時,他們的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

如此大的佔地面積... – 2013-05-28 18:12:47

0

您還可以添加一個獨特的參數來防止緩存,例如,如果您使用的是php:

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