zoukankan      html  css  js  c++  java
  • 缓存类图片显示技术

    <%
    '盗链判断
    Dim server_v1,server_v2
    server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
    server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
    If Mid(server_v1,8,len(server_v2))<>server_v2 Then
    Response.Write "非法的盗链"
    Response.End
    End If

    Dim url, body, myCache

    url = Request.QueryString("url")

    Set myCache = new cache
    myCache.name = "picindex"&url
    If myCache.valid Then
    body = myCache.value
    Else
    body = GetWebData(url)
    myCache.add body,dateadd("d",1,now)
    End If

    If Err.Number = 0 Then
    Response.CharSet = "UTF-8"
    Response.ContentType = "application/octet-stream"
    Response.BinaryWrite body
    Response.Flush
    Else
    Wscript.Echo Err.Description
    End if

    '取得数据
    Public Function GetWebData(ByVal strUrl)
    Dim curlpath
    curlpath = Mid(strUrl,1,Instr(8,strUrl,"/"))
    Dim Retrieval
    Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
    With Retrieval
    .Open "Get", strUrl, False,"",""
    .setRequestHeader "Referer", curlpath
    .Send
    GetWebData =.ResponseBody
    End With
    Set Retrieval = Nothing
    End Function

    'cache类

    class Cache
    private obj 'cache内容
    private expireTime '过期时间
    private expireTimeName '过期时间application名
    private cacheName 'cache内容application名
    private path 'url

    private sub class_initialize()
    path=request.servervariables("url")
    path=left(path,instrRev(path,"/"))
    end sub

    private sub class_terminate()
    end sub

    public property get blEmpty
    '是否为空
    if isempty(obj) then
    blEmpty=true
    else
    blEmpty=false
    end if
    end property

    public property get valid
    '是否可用(过期)
    if isempty(obj) or not isDate(expireTime) then
    valid=false
    elseif CDate(expireTime)<now then
    valid=false
    else
    valid=true
    end if
    end property

    public property let name(str)
    '设置cache名
    cacheName=str & path
    obj=application(cacheName)
    expireTimeName=str & "expires" & path
    expireTime=application(expireTimeName)
    end property

    public property let expires(tm)
    '重设置过期时间
    expireTime=tm
    application.lock
    application(expireTimeName)=expireTime
    application.unlock
    end property

    public sub add(var,expire)
    '赋值
    if isempty(var) or not isDate(expire) then
    exit sub
    end if
    obj=var
    expireTime=expire
    application.lock
    application(cacheName)=obj
    application(expireTimeName)=expireTime
    application.unlock
    end sub

    public property get value
    '取值
    if isempty(obj) or not isDate(expireTime) then
    value=null
    elseif CDate(expireTime)<now then
    value=null
    else
    value=obj
    end if
    end property

    public sub makeEmpty()
    '释放application
    application.lock
    application(cacheName)=empty
    application(expireTimeName)=empty
    application.unlock
    obj=empty
    expireTime=empty
    end sub

    public function equal(var2)
    '比较
    if typename(obj)<>typename(var2) then
    equal=false
    elseif typename(obj)="Object" then
    if obj is var2 then
    equal=true
    else
    equal=false
    end if
    elseif typename(obj)="Variant()" then
    if join(obj,"^")=join(var2,"^") then
    equal=true
    else
    equal=false
    end if
    else
    if obj=var2 then
    equal=true
    else
    equal=false
    end if
    end if
    end function
    end class
    %>
  • 相关阅读:
    留言板!
    NX二次开发-OLE/COM向EXCEL表格中插入图片
    NX二次开发-UFUN读取图纸尺寸的值UF_DRF_ask_dimension_text
    NX二次开发-UFUN修剪体UF_MODL_trim_body
    NX二次开发-UFUN相加布尔操作,可保留或删除目标体,工具体UF_MODL_unite_bodies_with_retained_options
    C++之判断字符串是否是数字
    CommandLineToArgvW调EXE传入参数【转载】
    NX二次开发-用户自定义资源栏选项卡RegisterActivationCallback
    NX二次开发-自定义添加右键菜单RegisterConfigureContextMenuCallback
    NX二次开发-调系统命令UF_load_library[UFUN调DLL]
  • 原文地址:https://www.cnblogs.com/QDuck/p/564048.html
Copyright © 2011-2022 走看看