Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Benvenuto

[Resolvido] Permanência no Cache

Recommended Posts

Fiz um sistema de gerenciamento de uma galeria de fotos. Cada foto tem uma descrição e uma ID sem auto-numeração, apenas com a posição de cada foto. Quando apago a foto, primeiramente no BD depois no servidor com FSO, caso ela seja a ultima foto apaga normalmente caso não seja a ultima ela apaga e renomeia os registro no BD e nos arquivos do servidor subindo uma posição na ID porém, em certos momentos, ela é como se pernamecesse no cache e so mostra a foto correta, depois da reorganização das ID's, quando limpo o cache do browser.

 

On Error Resume Next
id = request("id")

'cria o objeto de conexão com o banco de dados
set conn = server.CreateObject("ADODB.Connection")
conn.connectionstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=CAMINHO_BD"
conn.open

set rs = conn.execute("SELECT * FROM galeria WHERE id = " & id & "")

if request.QueryString("confir") <> "OK" then
	response.write "<center>Deseja realmente pagar a foto: <b>" & rs("descricao") & "</b> ?<br><a href=""apaga_foto.asp?id=" & id & "&confir=OK"">SIM</a> - <a href=""lista_fotos.asp"">NÃO</a></center>"
	response.end
end if

'inicio contagem numero de fotos
set rs_cont = conn.execute("SELECT * FROM galeria")

cont_fotos = 0
do while not rs_cont.eof
	cont_fotos = cont_fotos + 1
	rs_cont.movenext
loop
'fim contagem

'cria objeto FSO e deleta a imagem
set FSO = server.CreateObject("Scripting.FileSystemObject")
foto_del = server.MapPath("imgs\fotos") & "\mini_" & id & ".jpg"

'verifica se a foto existe
if FSO.FileExists(foto_del) then
	FSO.DeleteFile (foto_del)
else
	response.write "<center><b>Houve erro(s) na tentativa de deletar a foto. Tente novamente!</b></center>"
	response.end
end if

'deleta o registro da foto
set rs_del = conn.execute("DELETE * FROM galeria WHERE id = " & id & "")

'caso não esteja sendo apagada a ultima foto ela ordena a ID das outras fotos
if (Cint(id) <> Cint(cont_fotos)) then
	
	cont_order = 0
	cont_order_2 = 1
	
	id_resta = cont_fotos - Cint(id)
	
	'faz um loop alterando os registro seguidos ao que foi deletado
	do while cont_order < id_resta
		id_2 = Cint(id) + cont_order_2
		
		'organiza o BD
		set rs_order = conn.execute("UPDATE galeria SET id='" & (Cint(id) + cont_order) & "' WHERE id=" & id_2 & "")
		
		path_foto_old = server.MapPath("imgs\fotos") & "\mini_" & id_2 & ".jpg"
		path_foto_new = server.MapPath("imgs\fotos") & "\mini_" & (id_2 - 1) & ".jpg"
		
		'organiza os arquivos no servidor
		FSO.MoveFile path_foto_old, path_foto_new
		
		cont_order = cont_order + 1
		cont_order_2 = cont_order_2 + 1
	loop
end if

if err <> 0 then
	response.write Err.description & " " & Err.number & "<br>"
	response.write "<center><b>Houve erro(s) na deletação da foto. Tente novamente!</b></center>"
else
	response.write "<center>Foto deletada com sucesso.<br><a href=""lista_fotos.asp"">Clique aqui</a> para voltar</center></div>"
end if

'encerra os objetos
conn.close
set conn = nothing
set rs = nothing
set rs_del = nothing
set rs_cont = nothing
set rs_order = nothing
set FSO = nothing

queria saber se tem como resolver isso, se alguém ja se deparou com o mesmo problema.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece comigo. Mas ainda não descobri uma solução simples. A foto fica armazenada no cache do navegador.

 

Provavelmente se chamá-la através de programação, você consegue resolver isso...

 

imagem.asp

<%
	arquivo = request.QueryString(caminho)

	Set Objstr = Server.CreateObject("ADODB.Stream")
	ObjStr.Type  = 1
	ObjStr.Open
	Objstr.LoadFromFile arquivo 'caminho físico da imagem
	mytextFile = ObjStr.Read
	Set ObjStr = Nothing
			
	Response.ContentType = "image/jpg"
	Response.AddHeader "Content-Length", lenb(mytextFile)
	Response.BinaryWrite mytextFile
	Response.End
%>

exibirImagem.asp

<%
randomize
%>				
<img src="imagem.asp?rnd=<%=Int(1000 * Rnd)%>&caminho=caminhoFisicoDoArquivo" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar a tag HTML IMG passando o caminho normalmente, mas adicione o RND como o hargon fez que sempre irá solicitar ao servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra mim há mais uma complicação, a exibição das imagens são feitas por um SWF. Não haveria um modo mais simplificado de resolver isso? caso não haja terei que implementar outra solução.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, no local onde você pede para carregar a "imgxx.jpg" tente acrescentar uma query que gere algo aleatório, tipo "?rnd=NOW()" Verifique se tem como em seu SWF implementar algo assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode usar a tag HTML IMG passando o caminho normalmente, mas adicione o RND como o hargon fez que sempre irá solicitar ao servidor.

Nunca havia feito isso... hehe bom saber.

 

 

pra mim há mais uma complicação, a exibição das imagens são feitas por um SWF. Não haveria um modo mais simplificado de resolver isso? caso não haja terei que implementar outra solução.

 

Obrigado!

O Flash também possui uma função para gerar números randômicos. Dê uma pesquisada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvido!

 

coloquei o mesmo raciocínio no flash

 

data = new Date();

loadMovie("imgs/fotos/mini_"+foto_1+".jpg?rnd="+data_1, "img_1");

.
.
.

obrigado novamente!

 

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.