ASP.net解决CSS与JS的缓存问题

Web前端 专栏收录该内容
8 篇文章 0 订阅

前言

笔者前几个月没怎么写博客,现在实习工作也4周了,开始规定自己每周写一篇,主要目的是为了总结一下工作中遇到的问题与解决方法以及涉及到的知识,并与大家分享;顺便的锻炼下自己的语言表达能力,这个在工作中真是太重要的,很多时候只要可以把问题清楚的描述出来,就等于问题已经可以解决了。

背景

刚做完领导交给的任务(修改几个网页页面),自己测没问题了,可是放到领导的机子上测试时却出现了问题。找了一会发现是js缓存问题。。。还好这个问题以前碰到过,所以没花太长时间。既然遇到了这个问题,这里就记下来,并想一下具体的对策。

构造类似的问题模型

这里有4个文件:

Default.aspx
Default.aspx.cs
JS1.js
CSS1.css

其中在Default.aspx的head段有对js和css的引用

<link href="Css1.css" rel="stylesheet" />
<script src="JS1.js"></script>

领导交给的任务呢,需要对CSS1.css和JS1.js修改,现在我们在这两个文件里面打几个空行,模拟我们修改了文件。

这个时候,在自己电脑测的时候,可以会注意到要先清空缓存再测。但是放到别人的电脑上,别人不一定会注意。

问题就这么来了。

解决思路

百度过后总结一下,我们可以给引用文件加上时间戳,这样浏览器就认为这次的js和上次的js不是同一个文件,就会重新加载了。如果时间戳用DataTime.Now,那么重新加载的频率过高,会影响效率,所以我们只需要在文件修改后才让浏览器重新加载即可。

可以这么做。我们拿js文件举例:

后台代码写:

public string lastTime;

protected void Page_Load(object sender, EventArgs e)
{
    string filepath = Server.MapPath("JS1.js"); 
    FileInfo fileInfo = new FileInfo(filepath);  //FileInfo 在 System.IO 里
    lastTime = fileInfo.LastWriteTime.ToString();

}

这样lastTime就是JS1.js的最后修改的时间了。

接下来修改前台的引用为:

<script src="JS1.js?lastTime=<%= lastTime %>"></script>

问题就解决了! 很简单吧。

  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值