Mercurial browser on Windows 2003 takes several refreshes before displaying repositories

When attempt to browse my Mercurial repositories it usually takes several refreshes before the repository list is displayed. Конфигурация выглядит следующим образом:

  • Windows Server 2003 (выделенный компьютер, размещенный на http://www.server4you.com/.
  • Сайт имеет анонимную защиту паролем с помощью самоподписанного SSL.
  • Mercurial 1.5.3
  • Python 2.6.5
  • Python для Windows 32 с расширениями 214 py2.6
  • isapi-wsgi 0.4.2

Репозитории обслуживаются через ISAPI с использованием стандартного файла hgwebdir_wspi.py (копия приведена ниже).

Также, прежде чем делать клон /push/etc, я должен сначала просмотреть репозитории, иначе hg на моей локальной машине не сможет найти сайт.

Что я могу сделать, чтобы начать отслеживать эту проблему?

hgwebdir_wsgi.py

# Configuration file location
hgweb_config = r'C:\Public\Mercurial\WebSite\hgweb.config'

# Global settings for IIS path translation
path_strip = 0   # Strip this many path elements off (when using url rewrite)
path_prefix = 0  # This many path elements are prefixes (depends on the
                 # virtual path of the IIS application).

import sys

# Adjust python path if this is not a system-wide install
#sys.path.insert(0, r'c:\path\to\python\lib')

# Enable tracing. Run 'python -m win32traceutil' to debug
if hasattr(sys, 'isapidllhandle'):
    import win32traceutil

# To serve pages in local charset instead of UTF-8, remove the two lines below
import os
os.environ['HGENCODING'] = 'UTF-8'


import isapi_wsgi
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir

# Example tweak: Replace isapi_wsgi's handler to provide better error message
# Other stuff could also be done here, like logging errors etc.
class WsgiHandler(isapi_wsgi.IsapiWsgiHandler):
    error_status = '500 Internal Server Error' # less silly error message

isapi_wsgi.IsapiWsgiHandler = WsgiHandler

# Only create the hgwebdir instance once
application = hgwebdir(hgweb_config)

def handler(environ, start_response):

    # Translate IIS's weird URLs
    url = environ['SCRIPT_NAME'] + environ['PATH_INFO']
    paths = url[1:].split('/')[path_strip:]
    script_name = '/' + '/'.join(paths[:path_prefix])
    path_info = '/'.join(paths[path_prefix:])
    if path_info:
        path_info = '/' + path_info
    environ['SCRIPT_NAME'] = script_name
    environ['PATH_INFO'] = path_info

    return application(environ, start_response)

def __ExtensionFactory__():
    return isapi_wsgi.ISAPISimpleHandler(handler)

if __name__=='__main__':
    from isapi.install import *
    params = ISAPIParameters()
    HandleCommandLine(params)

hgweb.config

[paths]
/ = C:\Public\Mercurial\Repositories\*

[web]
allow_archive = bz2 gz zip      ; Allows archive downloads.
allow_push = ########       ; Users that are allowed to push.

2 ответа

Похоже, IIS 6 кэширует ваши веб-страницы (вы не определили, используете ли вы Apache или нет, поэтому я предположил, что это сервер Windows)

Воспользуйтесь этой ссылкой от Microsoft и установите для сайта немедленное истечение срока действия.

По пути что-то кешируется. Используйте curl или wget, чтобы получить страницу и проверить заголовки http. Это лучше без ССЛ?

Другие вопросы по тегам