Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

256
Visualizações
¿Parece que la página PHP se almacena en caché para algunos usuarios pero no para otros?

Tengo una situación extraña y espero que alguien haya experimentado esto antes y sepa qué escenarios posibles pueden causar que esto ocurra.

Tengo un sitio web PHP que accede a datos de una base de datos SQL. Los usuarios completan un formulario para agregar o editar datos que se PUBLICAN y los datos se escriben en la base de datos. Si el usuario está editando datos existentes, el php carga los datos necesarios para el formulario y uso JavaScript para completar los datos en los campos apropiados una vez que se ha cargado la página.

Todo esto me funciona correctamente en todas las máquinas que he probado y en la mayoría de los usuarios.

SIN EMBARGO... ALGUNOS usuarios informan que no ven los datos correctos en sus formularios, sino información desactualizada. Por lo tanto, cuando estos usuarios "editan" un formulario, en lugar de ver la información contenida actualmente en la base de datos, ven información antigua.

Tengo entendido que (normalmente) los archivos php no se almacenan en caché ya que se ejecutan en el servidor y luego el producto final se entrega al usuario. ¿Hay alguna situación que pueda hacer que un determinado usuario almacene en caché de alguna manera estos archivos "ensamblados" una vez que se reciben del servidor y luego se vuelven a cargar la próxima vez que se carga la página?

Ejemplo:

Hoy un cliente estaba tratando de editar la información usando el formulario. Me llamaron porque un campo mostraba algo incorrecto.

Inicié sesión en mi sitio y cargué el mismo formulario. Mi formulario mostraba los datos correctos (contenidos en la base de datos SQL), mientras que el de ellos mostraba datos diferentes.

Dos usuarios diferentes que miran la misma página web de php y el mismo formulario, usando el mismo navegador (chrome), que debería mostrar los mismos datos, pero no los muestra.

Estoy desconcertado en cuanto a cómo rastrear este problema y solucionarlo.

ACTUALIZAR:

Después de jugar un poco, sospecho que puede ser un problema de que el navegador del cliente o Internet sea un poco más lento que la mayoría, lo que podría estar causando que Javascript se ejecute antes de que la página esté completamente cargada.

Lo cambié para ejecutar la carga de javascript usando jQuery, lo que podría solucionar el problema hasta que pueda volver a codificar una solución más elegante, pero aún no he recibido respuesta de este cliente en particular, así que no sé si eso solucionó el problema para ellos. .pero ciertamente no dolerá.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

¿Quizás el navegador está almacenando en caché la página?
Para asegurarse de que no haya caché para el navegador, pruébelo en PHP

 <?php header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); ?>
about 4 years ago · Juan Pablo Isaza Relatório

0

Al igual que mencionó que PHP se ejecutó en el servidor, por lo que no se almacenarán en caché. Sin embargo, los navegadores básicamente almacenan en caché los datos de formularios frecuentes o recientes para su uso posterior. Vamos a discutir esto en detalle.

De forma predeterminada, el navegador observa y recuerda toda la información completada a través de los campos <input> en los sitios web. Esto permite que el navegador ofrezca autocompletar (es decir, sugerir posibles completaciones para los campos que el usuario ha comenzado a escribir) o autocompletar.

Estas funciones están habilitadas de forma predeterminada, pero el usuario puede desactivar esta función a pedido. Sin embargo, el navegador no almacena en caché cierta información confidencial, como el código PIN, etc. Para deshabilitar el comportamiento de caché predeterminado de este navegador, puede configurar el atributo de autocomplete en "off" :

 autocomplete="off"

Puede hacer esto para un formulario completo o para elementos de entrada específicos en un formulario:

 <form method="post" action="/form" autocomplete="off"> […] </form>

La configuración de autocompletar en el formulario tiene dos efectos.

  1. Notifica al navegador que no guarde los datos ingresados por el usuario en los campos del formulario para su posterior autocompletado
  2. evita que el navegador almacene en caché los datos del formulario en el historial de la sesión. Cuando los datos se almacenan en caché una vez, se usan más tarde cuando el usuario usa el mismo formulario y los campos de entrada relevantes. En resumen, los datos almacenados en caché se asignan a los campos de entrada relacionados.

Sin embargo, un punto importante a tener en cuenta es que el comportamiento de autocompletar no funciona para los formularios de inicio de sesión. es decir, los formularios incluyen los campos de nombre de usuario y contraseña. Además, el navegador permite al usuario elegir una contraseña maestra que el navegador utilizará para cifrar los detalles de inicio de sesión almacenados. Por este motivo, muchos navegadores modernos no admiten autocompletar="off" para los campos de inicio de sesión:

  1. Si un sitio configura autocomplete="off" para un , y el formulario incluye campos de ingreso de nombre de usuario y contraseña, entonces el navegador aún ofrece recordar este inicio de sesión y, si el usuario está de acuerdo, el navegador completará automáticamente esos campos la próxima vez que el usuario visite la página.
  2. Si un sitio configura autocomplete="off" para los campos de nombre de usuario y contraseña, entonces el navegador aún ofrece recordar este inicio de sesión y, si el usuario está de acuerdo, el navegador completará automáticamente esos campos la próxima vez que el usuario visite la página.

Sin embargo, por último, pero no menos importante, existe una solución genuina para eliminar este problema y esto es llenar el lado del servidor del formulario de edición del usuario. es decir, a través de PHP. En este caso, no habrá problemas de almacenamiento en caché y todo funcionará sin problemas. es decir

 <input type="text" value="<?php echo $username; ?>" name="firstname"/>

¡Espero que esta discusión te ayude!

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda