zoukankan      html  css  js  c++  java
  • 发现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的代码的基维百科

  • 相关阅读:
    input,textarea限制字数,实时绑定
    rem布局和vw布局的理解
    HTML5+CSS3响应式垂直时间轴,高端,大气
    谈谈前端工程化是个啥?
    js动态添加html标签和属性_手动插入meta、script、div、img等标签
    textarea换行_在textarea中如何换行的实现总汇
    css常用的颜色单位表示法
    CSS3 2D转换
    为什么设置overflow为hidden可以清除浮动带来的影响
    什么是数据交互格式?xml和json优缺点
  • 原文地址:https://www.cnblogs.com/qqloving/p/2526836.html
Copyright © 2011-2022 走看看