首页 > 其他分享 >uniGUI学习之禁用缓存(75)

uniGUI学习之禁用缓存(75)

时间:2023-12-19 21:22:29浏览次数:31  
标签:文件 缓存 uniGUI revalidate 代码 no js 75


引用了第三方js,css等文件,但是因为缓存的原因,修改后没有及时生效。
方法一:

在ServerModule的OnHTTPCommand事件中,加入以下代码

AResponseInfo.CacheControl := 'max-age=0, no-cache, no-store, must-revalidate, proxy-revalidate';

但是此方法有缺点,只支持exe模式,exe模式下所有的请求,无论是数据还是文件,都是由unigui服务器进行处理,而isapi模式下,文件请求都是由iis进行处理,所以没有执行到此代码,也就不会生效(iis可以设置自定义header来禁用缓存),同理HyperServer下也不生效,因为hy下文件处理由hy完成,同样没有执行到此代码。另外一个确定是会增加服务器压力,不缓存,那么所有文件在每次刷新的时候都会重新加载,就会增加服务器压力。解决方案是针对不同的文件进行禁用缓存,使用以下代码:

if ARequestInfo.URI = '/files/script.js' then
AResponseInfo.CacheControl := 'max-age=0, no-cache, no-store, must-revalidate, proxy-revalidate';

这样可以精确到单个文件进行缓存禁用。

TIPS:高级用法

可以在servermodule的onhttpcommand事件里增加一下代码

{$IFDEF DEBUG}
AResponseInfo.CacheControl := 'max-age=0, no-cache, no-store, must-revalidate, proxy-revalidate';
{$ENDIF}

这样可以在调试的时候不启用缓存,在调试过程中避免因为缓存、更换unigui版本、修改js/css文件等引起的报错。


 

方法二:

使用入口文件,新建一个js文件,写入以下代码

document.write("<script type='text/javascript' src='
/files/script.js?t=" + Date.now() + "'><\/script>");
多个文件向下追加即可,其他文件均由此文件进行引入,不在单独进行引入。此代码的作用是在引入文件的时候后面追加t=当前时间这样每次加载的url地址就都不一样也就不会使用缓存。此方法适用各种模式。

标签:文件,缓存,uniGUI,revalidate,代码,no,js,75
From: https://www.cnblogs.com/tulater/p/17914778.html

相关文章

  • uniGUI学习之自定义Hint(74)
    默认Hint样式 procedureTMainForm.UniFormShow(Sender:TObject);vari:Integer;beginfori:=0toSelf.ControlCount-1dobeginwithTUniFormControl(Self.Controls[i])dobeginifHint<>''thenbeginSh......
  • 页面缓存
    页面缓存根据需求分为以下3类类小程序:根据用户的跳转方法来决定如何操作页面缓存堆栈历史记录:根据用户访问的历史记录缓存一定数量的页面,超过限定数量时采用新进先出面包屑:根据面包屑结构,缓存当前页面的祖先页面类小程序需要解决的问题实现以下常用跳转方法navigateTo......
  • CF175B 题解
    原题传送门题目大意如题目描述。思路分析\(1≤n≤1000\),很明显\(\mathcal{O(n^2)}\)不超时,使用结构体,暴力即可。利用双循环求出名字相同的结构体并判断最高分,再根据字典序排序,再双循环求出比自己优秀人数,输出即可。代码:/*Writtenbysmx*/#include<bits/stdc++.h>usin......
  • 验证码组件开发,本地缓存倒计时
    vue组件<template><divclass="verifyCodemt-24"><divclass="header"><spanclass="logoinline-blockmr-6w-[26px]h-[26px]bg-black-0"></span><spanclass=&......
  • 戴尔PowerEdge R750 机架式服务器初始安装Windows Server 2019 服务器系统
    2.安装原版WindowsServer2019操作系统安装操作系统时在SSD硬盘上无法安装,错误如下: 1.在BIOS界面下检查物理磁盘是否处于online状态:2.将“FirmwareDeviceOrder”设置为enable,并重启:设置步骤:Vew-MainMenu-ControllerManagement-AdvancedControllerProperties,将......
  • 世微 AP75XX 低压差线性稳压器 LDO 多种分装
    产品描述     AP75XX是一款采用CMOS技术的低压差线性稳压器。最高工作电压可达24V,有几种固定输出电压值,输出范围为2.8V~9.0V,具有较低的静态功耗,广泛用于各类音频、视频设备和通信等设备的供电。特点应用领域封装信息输出电压选型注:(XX代表输出电压)型号输出电压封......
  • Docker 开启远程端口访问2375
    开启方法:1、修改/etc/default/docker下的配置cat/etc/default/dockerDOCKER_OPTS="-Htcp://0.0.0.0:2375"systemctlrestartdocker2、修改/usr/lib/systemd/system/docker.service配置cat/usr/lib/systemd/system/docker.service[Service]ExecStart=/usr/bin/dockerd-Htc......
  • 【UniApp】-uni-app-数据缓存
    前言好,经过上个章节的介绍完毕之后,给大家补充了一下uni-app-数据传递的内容那么补充了uni-app-数据传递的内容之后,这篇文章来给大家介绍一下uni-app-数据缓存搭建项目首先我们还是要先搭建一个项目,这里我就不多说了,大家可以参考上一篇文章搭建好项目之后,我们就可以开......
  • unigui显示uniTreeVview使用TUniTreeNode内存泄漏的问题【14】
    uniTreeVviewc创建一个tree,显示患者姓名(PatientName)。因为需要用到患者ID(PatientID),所以使用help:TPatientTreeNode=class(TUniTreeNode)//strictprivateFPatientID:string;functionGetPatientID:string;procedureSetPatientID(constValue:string)......
  • 14.adb 命令清缓存
    adbshell应用1查看目录结构:adbshellls查看系统当前日期:adbshelldate查看系统CPU使用情况:adbshellcat/proc/cpuinfo查看系统内存使用情况:adbshellcat/proc/meminfoadbshell应用2-查看应用列表显示所有应用:adbshellpmlistpackages显示系统自带应......