|
|
|
| Почитал ваш топик по кешированию, включил все мета-данные в свой скрипт, но после перезагрузки страницы:
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=history.php'>
</HEAD></HTML>";
|
опять отображется все не так: счетчик уменьшается, новые сообщения исчезают... Я думаю, что это опять-таки кеширование...
Но счетчик вообще перестал наростать даже при полной перезагрузке страницы (Ctrl+F5)... На локальном хосте все 100% работало (если надо, прикреплю скрипты), а в нете почему-то не работает... Может скрипты не имеют доступа на запись в файл (т.к. при первом вхождении скрипт должен перезаписывать содержимое файла: наращивать цифру)... Помогите с проблемой, плиз!
Сайт лежит на www.body-build.h14.ru
Спасибо большое! | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(28.01.2005 в 22:21)
| | Перво наперво создайте простейший скрипт, который будет осуществлять запись заранее подготовленной информации в файл - и посмотрите имеют скрипты право на запись или нет, чтобы исключить возможность кеширования. | |
|
|
|
|
|
|
|
для: cheops
(28.01.2005 в 23:11)
| | Скорее всего дело не в этом... Так как в гостевой книге сообщения добавляются, значит скрипты пишут таки в файл...
Проблема явно с кешированием...
P.S. А что это за минусы Дизайнер поставил? | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(28.01.2005 в 23:45)
| | > P.S. А что это за минусы Дизайнер поставил?
Извиняюсь. Это я перепутал темы и прошлось потом срочно стирать свои сообщения :) | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(28.01.2005 в 23:45)
| | Хм... а приведите заголовки которыми вы подавляете кэширование. Не смотря на то, что существует стандарт, прокси-сервера создают таким образом чтобы они вели себя как взбредёт в голову их владельцам, которые пытаются минимизировать трафик любыми доступными способами. | |
|
|
|
|
|
|
|
для: cheops
(29.01.2005 в 00:23)
| | Блин, а счетчик таки не меняется... Может действительно с правами доступа что-то (я на форуме про Апач как раз про это и спрашиваю, пока нету ответа...)
Я лучше выложу весь скрипт, на который осуществляется редирект с индексного файла:
Важные комментарии я напишу сейчас на русском
<html>
<head>
<title>Історія Бодібілдінгу</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<!-- Пробовал все ниже идуюие заголовки -->
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta HTTP-EQUIV="Expires" CONTENT="0">
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<style>
.attrib{font-family: Verdana, sans-serif; font-size: 13px; text-align: justify;}
.vote {font-family: Arial, sans-serif; font-size: 13px;}
td.info {font-family: Arial, sans-serif; font-size: 13px;}
td.navig {font-family: Arial, sans-serif; font-size: 13px;}
</style>
</head>
<body background="../../fon.jpg" link="BLACK" alink="BLACK" vlink="BLACK">
<?
include "../buttons/buttons.php"; // вбудовуємо сторінку з кнопками
require "../load_from_file.class.php"; // вбудовуємо клас
//ВОТ ТУТ СОХРАНЯЕМ ТЕКУЩУЮ ПОСЕЩАЕМОСТЬ
$f=fopen("../vidvid/vidvid.txt","r"); // зберігаємо в змінну кількість відвідувань
$kilk=fread($f,5);
fclose($f);
// ПРИ ПЕРВОМ РЕДИРЕКТЕ Я ТАКЖЕ ДОБАВЛЯЮ INC В АДРЕСНУЮ СТРОКУ
if(isset($_REQUEST['inc'])) // якщо перший редірект на сторінку, то збільшуємо кількість відвідувань
{
// ВОТ ТУТ И ДОЛЖНА ПРОИЗВОДИТЬСЯ ЗАПИСЬ НОВОГО ЗНАЧ. В ФАЙЛ
$kilk++;
$f=fopen("../vidvid/vidvid.txt","w");
fwrite($f,$kilk);
fclose($f);
// ЭТО НЕ РАБОТАЕТ!!! КЕШИРУЕТ ВСЕ РАВНО!
// ПО ИДЕЕ ПОСЛЕ ЗАПИСИ В ФАЙЛ СТРАНИЧКА ДОЛЖНА ПЕРЕЗАГРУЗИТЬСЯ УЖЕ БЕЗ ПАРАМЕТРА INС
*echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=history.php'>
</HEAD></HTML>"; // refresh сторінки
}
?>
// НУ ДАЛЬШЕ УЖЕ ВРОДЕ НИЧЕГО ВАЖНОГО НЕТУ
<table align="center" width="800" border="0">
<tr>
<td width="100">
<p align="center"> <img src="../../animation.gif"> </p>
</td>
<td width="550">
<p align="center"> <img src="../../history/zagol.jpg"> </p>
</td>
<td width="150">
<?require "../vidvid/vidvid.php";?>
</td>
</tr>
</table>
<table align="center" width="800" border="0">
<tr>
<td valign="top">
<?
if(isset($_REQUEST['vote'])) {require "../vote/vote_res.php";} // якщо переданий параметр vote, то показуємо результати
else {require "../vote/vote.php";}
echo "<br>"; require "../navig/navig.php"; echo "<br>"; require "../info/info.php";
?></td>
<td valign="top">
<table align="center" width="650" border="1" bordercolor="BLACK" bgcolor="#CCFFCC" cellspacing=5 cellpadding=10>
<tr>
<td class="attrib">
<?
$load_f=new Load_from_file("../history/history.txt"); // об'єкт класу, конструктор якого виводить текст з заданого файлу в броузер
?>
</td>
</tr>
<tr><td class="attrib">
<? $load_f=new Load_from_file("../history/mastering.txt"); ?>
</td></tr>
</table>
</td>
</tr>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: !!Yurchik!!
(29.01.2005 в 00:34)
| | А вы проверьте счетчик без записи в файл. Просто с выводом в браузере.
И значение вот этой директивы тоже проверьте $_REQUEST['inc']
Может ее и нет вовсе. Всякое может быть.
if(isset($_REQUEST['inc']))
{
echo $_REQUEST['inc'];
echo "Здесь будет запись в файл";
}
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.01.2005 в 00:56)
| | >А вы проверьте счетчик без записи в файл. Просто с выводом в
>браузере.
Работает, выводит то, что в файле (у меня на других страничках он и выводится просто, только на history.php с переменной inc должен наростать)
>И значение вот этой директивы тоже проверьте
>$_REQUEST['inc']
Хм... Ну на локальном хосте у меня все работало, я бы не рабочую версию даже и не отправлял бы... И в нете работает, т.к. если условие выполняется
>
>if(isset($_REQUEST['inc']))
>{
> echo $_REQUEST['inc'];
> echo "Здесь будет запись в файл";
>}
>?>
>
|
то там за записью в файл идет "рефреш", а он выполняется.
Так что по сути только с файлом проблема... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.01.2005 в 00:56)
| | Короче, понял ситуацию наконец-то :) Но не знаю, как ее решить :(
Одним словом, если я через Ctrl+F5 (очистка кеша) перезагружаю страницу с параметром "inc", то счетчик таки увеличивается :) (одной проблемой меньше). Но если я просто перегружаю эту страницу, то, не смотря на все хедеры:
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<meta HTTP-EQUIV="Expires" CONTENT="0">
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
|
страница все равно достается из кеша (подгружается ее старый вариант с необновленным счетчиком) и эта старая страница даже в файл не залазит (я так понял)... Они просто в наглую подставляют только то, что вывел броузер (т.е. HTML код)... И как это назвать??? | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(29.01.2005 в 18:34)
| | Браузер IE? Обычно в свойствах обозревателя (Общие-Параметры-выставляют проверять наличие обновления сохранённых страниц при каждом посещении). Самый убойным заголовком по подавлению кэширования является
<?php
header("Expires: Mon, 23 May 1995 02:00:00 GMT");
?>
|
попробуйте ещё его. | |
|
|
|
|
|
|
|
для: cheops
(29.01.2005 в 18:45)
| | Блин, попробовал - та же история, при полной перезагрузке обновляется и счетчик наращивается, но стоит потом нажать релоад и из кеша достается та же страничка (это даже видно невооруженным взглядом, т.к. она появляется почти сразу же)...
Но самое удивительное, что в гостевой книге попробовал добавить новое сообщение - и добавилось сразу же! Т.е. не из кеша достало страничку. Правда я там закоментировал "Релоад" после записи сообщения в файл и теперь если нажаь "Релоад" то последнее сообщение появится второй раз, но главное, что не кеширует!!! Блин, странно как-то... ничего не понимаю... | |
|
|
|
|
|
|
|
для: cheops
(29.01.2005 в 18:45)
| | Может мне им письмо написать...? Хотя это бесплатный хостинг (Холм), поэтому наверное ничего не дождусь... Хм... что же делать...? :( | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(29.01.2005 в 19:03)
| | А заголовок
<?php
header("Expires: Mon, 23 May 1995 02:00:00 GMT");
?>
|
не пробовали - мне в таких случаях помогает. | |
|
|
|
|
|
|
|
для: cheops
(29.01.2005 в 19:25)
| | неа... вот весь раздел <head>: вроде есть все что надо, но не помогает... :(
<?php
header("Expires: Mon, 23 May 1995 02:00:00 GMT");
?>
<html>
<head>
<title>Історія Бодібілдінгу</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
<style>
.attrib{font-family: Verdana, sans-serif; font-size: 13px; text-align: justify;}
.vote {font-family: Arial, sans-serif; font-size: 13px;}
td.info {font-family: Arial, sans-serif; font-size: 13px;}
td.navig {font-family: Arial, sans-serif; font-size: 13px;}
</style>
</head>
|
помогает только если перезагрузить с помощью Ctrl+F5 | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(29.01.2005 в 18:34)
| | Хм… а попробуйте при рефреше передавать произвольный параметр ?rand=".rand().
<?
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=history.php?rand=".rand()."'>
</HEAD></HTML>";
?>
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.01.2005 в 23:01)
| | Дело в том, что я даже отключил рефреш (для упрощения на данный момент), т.е. у меня просто грузится "history.php?inc", которая должна увеличивать счетчик... Но она увеличивает его только при полном рефреше, а при простых просто выводит последнюю ее версию из кеша... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.01.2005 в 23:01)
| | P.S. Я уже им письмо даже отправил, но пока (как я и ожидал) они не спешат отвечать, хотя возможно выходной день... Но админ же все равно должен быть... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(29.01.2005 в 23:01)
| | Наконец-то я понял в чем штука! (Благодаря помощи Дизайнера: особенно последнее сообщение, и cheops).
Как я понял, скрипты не кешируются, если методами post или get сценарию переданы параметры, отличные от последних переданых!!! (Теперь я понял, почему в гост. книге если добавить новое сообщение оно отображается сразу - переменная переданая сценарию отличается от той, что в кеше)
Но возникает теперь проблема: как осуществить передачу каждый раз нового значения какой-то переменной сценариям, пусть даже эта переменная нигде не будет использоваться. Дизайнер предложил ф-ией генерации случайного числа, и это очень классное решение, я думаю. Но индексный файл у меня html, и в нем также прийдется эту ф-ию применять. Можно Java-Script применить, я думаю, но просто точно не помню как это сделать... Подскажите, плиз, и поделитесь мнениями насчет решения проблемы выше: может кроме Rand() есть еще решения.
Мой индесный файл:
<html>
<head>
<script language="JavaScript">
function load()
{
window.location.href="../cgi-bin/history/history.php?inc";
}
</script>
</head>
<body onLoad="load()">
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: !!Yurchik!!
(30.01.2005 в 17:07)
| | блин... и на письмо хостеры так и не отвечают... и тут новых советов нету... вобщем одно расстройство...
Кстати, даже "rand()" работает только один раз правильно... второй раз страничка опять же достается из кеша... короче, наверное, надо закидывать то место и искать другой бесплатный хостинг | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(31.01.2005 в 21:30)
| | Хм... вы можете настроить работу вашего сайта так, чтобы HTML-файлы воспринимались как PHP-файлы, подробности по ссылке.
PS Тема просто очень длинная и сюда уже не охотно заглядывают :)))
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1010 | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(30.01.2005 в 17:07)
| | На JavaScript случайное чсило можно сгенерировать функцией Math.random()
function load()
{
window.location.href="../cgi-bin/history/history.php?inc&rand="+Math.random();
}
|
| |
|
|
|
|
|
|
|
для: !!Yurchik!!
(28.01.2005 в 22:21)
| | - | |
|
|
|
|
|
|
|
для: !!Yurchik!!
(28.01.2005 в 22:21)
| | - | |
|
|
|