發現ASP.NET一個小技巧--真愛生命,遠離js、css版本號


被折騰的日子

      以前不覺得js、css版本號的處理是個問題,直到最近被折磨的吐血,才發現往往不是問題的地方恰好就是問題所在。

      以前接觸的項目js和css一直都是放在項目下面的js和css文件夾下,沒有版本號,風平浪靜,現在的項目,為js和css單獨搭建了一台服務器,好像還有什么nginx,竟然能把所有的js和css緩存起來,你說緩存會失效吧,他總是不在我想要的時候失效,出現bug總是因為緩存失效。

     項目之前是用一個可配置的版本號來處理這個問題,版本號放在 appSettings里面,這樣出了幾個小問題

     1 修改版本號時需要iis重啟

     2好幾台服務器,appSettings 不能批量上傳,誰也不敢保證每台服務器的appSettings配置一樣,結果有一個項目里面配置還真不一樣

     3不是所有js在改版本號時都修改好了,可以升級版本號,因為我不知道其他人是否在改js

常規嘗試

     然后我發現,其他人是這么處理的,在頁面上引用js時,在大版本號后面加一個小本版號,日子就這么過去了,結果問題又出現了

     1現在修改版本號變成了現在服務器上下載相關文件,修改本版號,再上傳文件,再在本地修改對應的版本號(如果本地可以修改的話就該,不能修改[文件被人占着]找個地方記錄一下服務器的版本號)

    2有時候改版本號非常頻繁,例如項目上線調試,下載-》修改-》記錄-》上傳 ,和死循環一樣

    3最要命的是,有時候改一個js文件,卻不知道什么地方用了這個js,用的是什么版本,只有等到bug出現時才能發現

新的嘗試

現在我是這么處理的

例如博客園的這個js

<script src="http://common.cnblogs.com/blog/script/site.js" type="text/javascript"></script>

<script src="http://common.cnblogs.com/blog/script/site1.1.1.js" type="text/javascript"></script>

 

首先 創建一個和js名稱一樣的頁面

微博桌面截圖_20120529211400

代碼如下

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="site.aspx.cs" Inherits="jsv_site" %>
 
<script src="http://common.cnblogs.com/blog/script/site.js?v=<%=big %>s<%=small %>" type="text/javascript"></script>

其中big為站點統一版本號,smal為當前js的小版本號,這里可以直接替換為數字

例如

<script src="http://common.cnblogs.com/blog/script/site.js?v=<%=big %>sa" type="text/javascript"></script>

 

以后修改可以繼續追加小版本號例如abcdef等,必要時小版本號可以還原回去

或<script src="http://common.cnblogs.com/blog/script/site1.1.2.js" type="text/javascript"></script>

 

具體用到js的地方,下面這么引用就行了

<head>
    <title></title>
<%--    <script src="http://common.cnblogs.com/blog/script/site.js" type="text/javascript"></script>--%>
    <%this.Server.Execute("~/jsv/site.aspx"); %>
</head>

 

以后修改版本號修改上傳site.aspx文件就行了!而且這個文件很少會被人占用,本地修改直接上傳,連備份也省了

關於Server.Execute

Server.Execute方法允許當前的ASPX頁面執行一個同一Web服務器上的指定ASPX頁面,當指定的ASPX頁面執行完畢,控制流程重新返回原頁面發出Server.Execute調用的位置

博客園為啥沒版本號

博客園的js是放在common.cnblogs.com下面,但是他為什么版本號呢?

可能是js修改不夠頻繁造

為什么js修改不夠頻繁呢?

因為沒有需求

為什么沒有需求呢?

因為沒有用戶提需求

當然,也可能是需求太多,忙不過來

最近貌似在折騰博客園知識庫還是什么的,貌似要做類似基維百科的東西,

個人覺得博客園本身就應該成為基維百科類的東西,而不是做什么知識庫

一人一行代碼,那也是很多行代碼

當然這需要一個很nb的源代碼管理的東西和一個很nx的線上代碼版本管理的東西和一個很nb的數據庫數據版本管理的東西

當然也是需要nb的設計和開放的產品理念以及用於嘗試的心態

開放代碼的博客園就可以成為nb的代碼的基維百科


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM