真爱生命,远离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的代码的基维百科

test
分类: asp.net mvc
原文地址:https://www.cnblogs.com/Leo_wl/p/2527844.html